The 's off' in the obj file, describes if smooth shading should be used or not.
@dehrk902410 ай бұрын
she s off when she see my smoothe model
@francescosorce51896 жыл бұрын
To anyone who wants to understand the math/maths better I raccomend 3blue1brown's "the essence of linear algebra" series. It basically gives a geometric intuition to a lot of the linear algebra operations that are very weird untill you understand at least a little about them like why on earth does the dot product have anything to do with similatity or why the cross product it's that vector or how a matrix is a guide for a transformation ecc...
@francescosorce51896 жыл бұрын
also, nice video as always, I still didn't know how to read files and finally I do, I thought it was going to be something really hard but in the end it wasn't, thanks.
@barmetler5 жыл бұрын
Ah, I see you're a man of culture as well.
@spetsnatzlegion33665 жыл бұрын
At this point, combined with school physics work I’m diving into such a massive maths sinkhole that I’m considering watching through the entire video list of all those good maths channels to learn all of maths
@luisendymion90804 жыл бұрын
Yeah, 3blue1brown is an amazing channel. The animated graphics used to make the concepts more accessible are mind-blowing.
@Cypekeh3 жыл бұрын
Khan Academy course on linear algebra is good too. (in my opinion easier to understand than 3b1b)
@MJLangdon1754 жыл бұрын
Finding out that the Blender software exist is a massive relieve! I was getting worried that I would have to work the coordinates out for every shape :) Going from learning C++ to actually using it to make something animate across the screen is making everything that I have learnt so far, click into place. It has given me an even bigger list of things to learn as well. Thanks Javid.
@ArtumTsumia3 жыл бұрын
I'm starting a new personal project with the goal of writing virtually everything myself, so when I saw this, it was the perfect thing to check out. This series is a fun little refresher as I haven't really written graphics code this low level since learning to code. Going back to basics, and really diving into some of the low level stuff like rendering, networking, etc. rather than simply relying on existing libraries is a welcome break from focusing on the game logic side of things. A wire-frame isn't necessarily as exciting to show off as a more complete project, but there's a different kind of satisfaction from building it, along with the understanding gained.
@jockinafrock6 жыл бұрын
Stunning, Javidx9, simply stunning. I'm in awe of your way of explaining this. Can't wait until I have 6 free hours to transcribe this code into VS and watch it come together. Much appreciated.
@javidx96 жыл бұрын
lol thanks jockinafrock, 6 hours? I wish I had a free 6 hours to just code :D
@gregorymeadows35726 жыл бұрын
I quite like this Developer version of Russel Crowe
@javidx96 жыл бұрын
Are you not entertained?? XD
@johnhammer86684 жыл бұрын
Indeed. Captain of Master and Commander: The far side of Z-axis .
@luisendymion90804 жыл бұрын
OMG hahahah. Made my day ;)
@dynamagon2 жыл бұрын
Progress going well so far in rewriting your 3D application in C with standard libraries! Great videos by the way. You are very well mannered, entertaining, and most importantly, an extremely good teacher.
@robertboran62346 жыл бұрын
The more closer we get into the nature of reality the math becomes more alien and beautiful.Nice explanation as always !
@javidx96 жыл бұрын
Thanks Robert - another original lone coder! Quite a few in this thread now
@keithrobinson20162 жыл бұрын
Without a doubt, the best coding channel on KZbin, in terms of topics, content and presentation.
@johnhammer86684 жыл бұрын
Huh. This is what the creators of the universe must have felt like in their early days. Thanks Javid.
@Mrjcowman6 жыл бұрын
I sat here beating my head against a wall for 2 hours because my triangle culling code wasn't working. The triangles would pop in and out of existence seemingly at random! Turns out I was summing the x component of vectors in my vector subtraction method instead of subtracting them. In the interim, though, I improved a lot of risky code and even wrote a quick surface normal visualization tool, so all in all I think it was time well wasted! Thank you for these guides and everything in your channel. I truly feel like I'm learning so much more about programming in c++ than I ever have from a book or typical guide.
@javidx96 жыл бұрын
Hey Jacob, thanks man, sounds like you fixed a bug you'll never make again :D
@XoIoRouge Жыл бұрын
Thank you for EXPLAINING THE MATH! And actually walking through it, explaining it, and telling us why and how it works. I've been jumping through hoops in KZbin as people kept sayin WHAT to do, then when it didn't work, I didn't know WHY it didn't work.
@gregblastfpv36236 жыл бұрын
23:14 Minecraft players unsubscribed.
@javidx96 жыл бұрын
No big loss... XD
@ed_iz_ed6 жыл бұрын
Hahahh
@ehkpnwvthuvibaoibx5 жыл бұрын
you wouldn't say that if you play minecraft the way I do!
@TheBypasser5 жыл бұрын
They are too stupid to deal with anything tougher than their cubed crap anyway. Sh, I still have no idea why, should you want to _build_ something, wouldn't you simply choose some CAD of your choice over this crap...
@Malkovith25 жыл бұрын
Gamers must rise up!
@alangrant52783 жыл бұрын
Oh man that rotating cube takes me back to the first program I made on my Sinclair spectrum back in 1982 (ish).
@rhydermike4 жыл бұрын
This series is great. I'd had a curiosity about this type of engine ever since I first played Elite on the BBC Micro in 1985. Thanks for making it.
@truesoundwave3 жыл бұрын
You are a blessing to a student studying graphics. This has taught me so much.
@Rearendoftrain4 жыл бұрын
I’m a software engineer who works in health insurance, and I’m mostly baffled at the complexity of 3D calculations. Maybe it’s because I was bad at trigonometry.
@javidx94 жыл бұрын
Thats good honest work though Brian, the complexity of insurance baffles me 😁
@efraimibasco9162 Жыл бұрын
@javidx9 eqww🎉 we w 🎉w 😢w😢😢😢😢😢🎉🎉🎉🎉😢😢😢🎉🎉🎉w🎉e and 🎉🎉ww🎉😢🎉w😢
@ameerabdallah54294 жыл бұрын
This is great, I absolutely love this series because as soon as you mention something about some method that we have used in my linear algebra class, it's like it just clicks how useful it was that I learned it. I am completely astonished by how many problems are able to be solved by simply using the cross product of dot products.
@mojoofc95285 жыл бұрын
It’s normally normal to normalize the normal! Wish we were friends, again thank you for this, it really helps me grasp cpp more then just plain generic tutorials, just mwah
@laurin__11 ай бұрын
Javid is like a father figure introducing me to complex things in a fun way
@nasserghoseiri49344 жыл бұрын
Frankly, this tutorial series contain as much information as a university semester. Congratulations, and thanks for providing this tutorial...
@sorceryengine2 жыл бұрын
not rly, math semester material at uni makes you wanna quit at finals sometimes, it pays off later though
@multitimmytiger25 жыл бұрын
I've successfully made a rotating cow! This is awesome. Didn't even know I was interested in this stuff - and now I'm hooked! Thanks a lot for this video! :)
@kazenohito76415 жыл бұрын
HOLY CRAP! BLENDER IS AMAZING!
@voytechj6 жыл бұрын
You don't need normals for culling triangles. It can be done in window coordinates after projection. There is formula for calculating signed area of a triangle: A = 1/2 * (x1*y2 - x2*y1 + x2*y3 - x3*y2 + x3*y1 - x1*y3) You need only a sign: front_ccw = ((xw_1*yw_2 - xw_2*yw_1 + xw_2*yw_3 - xw_3*yw_2 + xw_3*yw_1 - xw_1*yw_3) > 0) ? true : false; // xw, yw - points in window space for 3 vectors [v1,v2,v3], front_ccw face is visible when normal vector is pointing towards camera and vertex are in Counter-Clock-Wise (CCW) direction. CCW order determines direction of the normal as well: normal = cross( v2 - v1, v3 - v1 ) ps. if area is 0, then triangle is thin and you decide how to draw it. For less than 0, back of a triangle can be drawn with darker colour or rejected.
@javidx96 жыл бұрын
Hi voytechj, no I dont need normals for culling, but I do need normals, and since I generate them anyway I just kept it simple.
@voytechj6 жыл бұрын
Hi, that "Shoelace formula" came from glspec33.core.pdf (chapter 3.6.1 Basic Polygon Rasterization, page 116). Its good to know that clipping in OpenGL and graphics cards happen in rasterization step. It always works and don't depends on how crazy camera and projection transformation you have :-). Of course in own renderer everything is permitted. In addition I want to say, that lots of things depends on what kind of normals you calculate: per-vertex or per-triangle. Per-vertex usually are for lighting purposes and they don't have to be perpendicular to a triangle (its a useful feature for grass, tree branch lightning, smooth shading, etc.). For that reason visibility can't rely on that kind of normals. Per-triangle are perpendicular but they don't fit well in VertexBuffer that can be sent to GPU (if used of course). You have to store them 3 times with each vertex in triangle or probably calculate in geometry shader. Sometimes this can be a problem. Don't remember if You mention that but normals have an extra feature: Ax + By + Cz + D = 0 vector [A,B,C] from that plane equation is a normal to that plane. I used them while ago for simple collision detection for convex objects. Just solve Ax+By+Cz+D>0 for checking if a point (x,y,z) is in front of a plane. Ps. I can not wait for next episode about camera projections. So far great series
@AinurEru5 жыл бұрын
hmm... Wouldn't doing it before projection save on the matrix multiplication on all verticies of all back-facing triangles? Sounds like doing it after projection would be more expensive - especially considering that he needs the normals anyway...
@andrewdunbar8285 жыл бұрын
This is how I did it on my Speccie in the early '80s in BASIC. I knew what normals were but I never grokked vectors, which seemed too obvious to require their own concept, and matrices still baffle me with how they make sin and cos vanish. Hidden surface removal was as far as I got. I wanted hidden line removal but that became pointless once filled polys and then texture mapping came along. I stuck with convex models because I foresaw the problems with z-sorting to render from back to front, but I couldn't foresee the solution. I always hated breaking everything down into triangles. Too much practical, not enough interesting, and for hidden line removal you have to distinguish explicit and implicit edges. But without them you have to deal with concave polys. Don't mess with raw concave polys (-:
@00mongoose5 жыл бұрын
One of the best tutorials I've ever seen. Excellent balance between, detail, simplicity and clarity.
@clonkex5 жыл бұрын
Best explanation of dot product I've ever seen! I finally understand it intuitively!
@javidx95 жыл бұрын
Thanks David!
@BenJones-g3p Жыл бұрын
Just started learning C++ and this has blown my mind. You are a wizard.
@joshlovesfood3 жыл бұрын
This series is golden, and so is the content of this video
@javidx93 жыл бұрын
I'm pleased you're enjoying it! If you fancy giving it a go, the console game engine has been replaced with the olcPixelGameEngine now, but they are 99% compatible so you can still follow along.
@joshlovesfood3 жыл бұрын
@@javidx9 I will be giving this a go, but I’ll start with Tetris and some of the easier games you have videos for. Thank you for sharing your knowledge, skills, and experience!
@joshlovesfood3 жыл бұрын
@@javidx9 I am learning C++ first, then I am definitely going to watch these. I'm a hobby programmer in C# using Unity, I'd like to get into making my own game engines with C++ for retro game creation
@davidsullivan74556 жыл бұрын
Excellent! I ported an old, OLD 3d engine (Michael Abrash's early Doom stuff) to c# . The engine couldn't deal with complex shapes. Your z-sorting was a great help!
@javidx96 жыл бұрын
Thanks David, my Z-sorting only works well for small polygons though, so be careful if using large ones.
@davidsullivan74556 жыл бұрын
@@javidx9 not a problem. When I say complex, that engine couldn't handle your space fighter...
@thomashenrydavies2 жыл бұрын
Just brilliant. You are to coding what Paul Sellers is to woodworking. Incredibly high quality stuff.
@jponter6 жыл бұрын
these videos are fun to watch, bit of a nostalgia trip for me - my last 3d coding was when I was in my mid 20's (almost 20 years ago!) :) - Thanks for making them, your explanations are extremely clear and no doubt will help lots of people get their head around the subject!
@javidx96 жыл бұрын
nostalgia? This is cutting edge stuff isn't it?? :D Thanks jponter!
@muckymcfly6 жыл бұрын
You deserve to be a much bigger channel, keep up the amazing work.
@javidx96 жыл бұрын
Hey thanks MuckyMcFly! So long as people find the content useful - I'm happy.
@Oplaner4 жыл бұрын
It was absolutely cool that you had mentioned the way of inputting more complex models into the engine. Thank you.
@ridespirals3 жыл бұрын
That is the best explanation of the dot product I've seen yet. Really helps give you an intuition for what the dot product _means_
@andrewkreisher6895 ай бұрын
Love this series, reminds me of topics from my computer graphics course in uni and helps me learn c++ at the same time :D
@RatoCavernaBR6 жыл бұрын
Where are the mecha unicorns?
@GodofWar15156 жыл бұрын
Hey javidx9. Thanks for another great video. I learned a lot about 3d engines and how they work from within the code which is something I have been wondering about for a long time.
@javidx96 жыл бұрын
Thanks Lucas, my implementation is one of many ways of doing this
@vladimirlazarevic97926 жыл бұрын
Just found your channel today from some guy recommending it in comments. Anyway, I rarely comment but I have to say that your content is amazing, so it's an easy sub from me. Keep up the good work!
@javidx96 жыл бұрын
Hey Vladimir, thats really nice of you to say so, so thank you!
@bianggulugulu69725 жыл бұрын
awesome!I am a Chinese student, and I'm so excited to watch this video! Thank u! 谢谢
@saeklin6 жыл бұрын
Alright, now to simulate protein folding.
@bartek71654 жыл бұрын
Now it got sense ( ͡° ͜ʖ ͡°)
@luisendymion90804 жыл бұрын
Nah, the next logical step in complexity would nuclear reactors simulations. I'm sure @javidx9 is already working on it lol
@user-dh8oi2mk4f3 жыл бұрын
@@luisendymion9080 the next step is to simulate an entire universe.
@apostoloskatranitsas60633 жыл бұрын
@@user-dh8oi2mk4f He already started doing that!
@oscark51275 жыл бұрын
This is the most interesting programming video I've ever watched. Thanks so much for making it!
@wWvwvV5 жыл бұрын
I heard "unfortunately" twice till what I've seen so far. Both times meant "and fortunately".
@wojtekburzynski6544 жыл бұрын
25:03 When tutor looks up tutorial. Amazing video as always.
@barmetler5 жыл бұрын
I went from not knowing anything about C++ to at least knowing how to implement simple things, purely because of your videos! :D I knew some java before, that obviously helped. But operator overloading alone is enough to make me like C++ more than Java XD I actually have an addiction to it now
@jean-naymar6026 жыл бұрын
I just watched ep1 and was asking myself when ep2 would come. I hit refresh and *boom* there it was. Also it was a long time since I last commented but I was focusing on my studies lately so I didn't really have time to watch all of your videos, but now that i'm on holydays, i'll take care of changing that
@jean-naymar6026 жыл бұрын
I realised I keep commenting like this channel was still no more than a few hundred subs, but you have multiple thousands now. Congrats ! (See, I told you you'd have a lot more subs)
@javidx96 жыл бұрын
Hi Jean-Nay, long time! Studies are more important than these videos, but its nice to hear from you again. One of the first Lone Coders!
@jean-naymar6026 жыл бұрын
*/me blushes*
@jean-naymar6026 жыл бұрын
Also I must say I really enjoy videos going into details like that (also like the 1st episode). I really think that deriving the formulas and what not is what makes you have a strong understanding of what you're doing (with practice of course), even if the math seems harsh at first. Just to give my opinion
@dynstinn11 ай бұрын
when he said especially games made from cubes are boring. it hit me hard cuz we have minecraft. yeah now it is boring but it certainly wasnt back then. great tut btw. helped me a lot.
@cblbopotka39155 жыл бұрын
Such cumbersome code. You can make your life easier after defining simple operations under vectors and triangles.
@evanotoole7872 жыл бұрын
I always love it when I give myself challenges such as the "Try to Convert the Old ConsoleGameEngine Code Into PixelGameEngine Code". The GetColor(float lum) function is kicking my ass lmao
@javidx92 жыл бұрын
Heh. When you get that one, you'll kick yourself 😉
@random_company11 ай бұрын
You definitely deserve a like, bro!
@wyrdaen6 жыл бұрын
I don't know why, but you have used the "right-handed" definition of the cross product, but you drew all your coordinate systems as a left-handed ones... A part from this minor feature I really enjoy your videos, keep up the good work!
@javidx96 жыл бұрын
Hey thanks luigi! You know, I never considered that - and it goes someway to explaining a few things too, lol :D
@dheerparekh13057 ай бұрын
I'm a Btech EnTC student from India who has just completed 1st year of college and am looking forward to creating interesting projects in my 2.5-month summer/internship break I wanted to create a 3D engine as I found it interesting and stumbled upon this series; I have watched only the previous video and this one and had to refer other videos on YT to understand the math better. Would like to thank you for creating this series as I found no other videos on KZbin explaining in such detail how to build a 3D engine and guiding through the process. It would really help if you could provide guidance on how to approach building a 3D engine by suggesting which videos should I watch to get the whole picture like rasterizing the triangles. I would also like to create a drawing program like the game console you are using to draw
@NavyCuda Жыл бұрын
Oh man what a headache! I started part one and got a bit into part 2 on my pc. I prefer my mac. So after hours of screwing around to figure out how to get SDL to work, I started coding along again. However my cube wouldn't form up right. Just figured it out... on the windows machine, I didn't have to initialize the camera with { 0,0,0 } but I did on my mac!
@Hardwarenerd2 жыл бұрын
Okay, the past days I was making a 2d "paint" like application in Java for a university assignment. When I finished the project I was surprised with how much actually Java offers as far as graphics go! (yes you can connect it with OpenGL etc.). But the spark came when I thought "hey how hard could it be to make primitive" first person shouter " type of game. I searched an I knew that unity and blender for models was basically what I would need, but I wanted to furthermore explore how game engines work. So what better start to learn from these videos. Nice understandable math, clean code and pretty good explanation. Time to implement the theory in Java
@PCarew6 жыл бұрын
I notice that at 7:04 through 9:0, you calculate the normal prior to projection, and then spend considerable effort over the next 8 minutes to resolve the issue of projection anomalies. I simply calculated the normal ***after*** applying the projection matrix. Problem solved, no further action/calculation/ray determination was necessary. The correct faces were removed appropriately.
@javidx96 жыл бұрын
Correct Paul, but I go on to need my normals prior to projection for the following videos. You can also transform your normals with a normal matrix (which I dont do either) rather than calculate them from your projected geometry, if you have them to begin with.
@NeilRoy6 жыл бұрын
Very nicely explained. Took me a long time to understand all this stuff. I'm still having problems loading textured 3D models using modern OpenGL. I have often thought about implementing a classic 3D game, without textures. The type of things we seen before Wolf3D and Doom. If you ever played around with the Virtual Reality studio from a lonnng time ago, you know what I mean. Flat shaded 3D graphics like you have created. Loved them back in the day.
@javidx96 жыл бұрын
Thanks Roy - I know the Virtual graphics you are referring too, and those massive headsets XD
@javidx96 жыл бұрын
Whoops, Neil, lol, my bad XD
@TastyPurpleGum3 жыл бұрын
Lol @ 2:13 that minecraft roast! Great video, I appreciated every second of it :)
@bunabyt33 жыл бұрын
These videos are so relaxing. I love following along with the explanations, it's not so slow that I get bored, and it isn't so fast I can't follow along. Great videos!
@laurin__11 ай бұрын
0:00 - 17:15 Only draw triangles facing the camera 17:15 - 22:53 Simulate unidirectional light 22:53 - 32:30 Load mesh from .obj file 32:30 - 39:39 Draw closer triangles on top of further
@stutteringcris4684 жыл бұрын
It's like watching Picasso paint! I'm in awe! :O
@GeorgesChannel5 жыл бұрын
I always wanted to program my own graphics engine in BASIC on a commodore plus/4, my first computer. I realized my little dream now, because of your great programming series. I really enjoy them. Thank you so much!
@immortalsofar53143 жыл бұрын
I used assembler on the C64 but used a completely different approach to wring every last CPU cycle and memory location out of it.
@crossity2 жыл бұрын
I think it is one of the best 3D game engine creating video
@robertjr.kibble80533 жыл бұрын
You literally are just teaching exactly everything I've been trying to figure out for like three years (idk just for fun I'm a CS major and I thought a graphics engine would be a cool project for some reason). This is perfect. I've been looking through math tutorials on linear algebra, coding functions with linear algebra, tutorials like this, and a lot of videos had mistakes and completely through me off course. Your videos show everything, explain everything and it works exactly like it should every single time. Thank you. I'm going to make minecraft 2 now.
@javidx93 жыл бұрын
Thanks Robert, I'm pleased you're finding the videos useful!
@jonslaco90206 жыл бұрын
Great stuff, I found this video when trying to find how to fill triangles, the only part you didn't write from scratch!!
@javidx96 жыл бұрын
Hi Jon, thanks buddy - I do talk about filling triangles from scratch in a later part of this series when it comes to texturing the triangles.
@Adrischa3 жыл бұрын
@jon slaco did you ever find a good way to fill out those triangles?
@SilverHaze5X5 жыл бұрын
Sir, you deserve more suscribers, your content is amazing! Here, have 1 more.
@molnez2 жыл бұрын
Programming around mid-day?! Clearly you are not a real programmer, but an imposter. No, but in all seriousness this is really great. Learning a lot, thank you!
@PhilBoswell6 жыл бұрын
Nice work, but I have a couple of optimisation points: one very minor, one potentially major but only a vague memory. The first, rather pedantic point, is that if you're simply going to compare the magnitude of two numbers (for the sorting) you don't need to divide both of them by 3 o.O I know that in this case the extra division might not be massively expensive but it all adds up;-) The second is a dim recollection of reading a journal article years (decades) ago describing an algorithm for pre-processing an object made up like yours to sort the facets into the appropriate order so that regardless of orientation the later ones never obscure the earlier ones: it included a procedure for splitting up facets which "cross" each other to eliminate possible intersections. So providing you check the normals for whether the face is actually pointing towards the camera, you never have to sort the faces dynamically, just fire them off in the same order each time. If I knew the name of the algorithm I would give it you, but all I can do is google and hope: possibly someone will recognise my description and find it quicker (or at all ;-)for the edification of the OLC Gang ^_^
@javidx96 жыл бұрын
Hi Phil, you're right, and I think the algo you are looking for is Binary Space Partition trees!
@crusaderanimation69673 жыл бұрын
23:15 ANGRY MINECRAFT PLAYERS NOISES XD
@MakotoIchinose5 жыл бұрын
If you're a total newbie to this but opting to use PixelGameEngine instead of the ConsoleGameEngine, simply put this argument in FillTriangle function you called for rastering the triangles: olc::Pixel(dp*255, dp*255, dp*255) As you've might guess, this'll do the shaded coloring job without the console's limitation.
@nomoturtle17884 жыл бұрын
This is incredible. Thanks so much for sharing, I'm learning a lot by following along. Really interesting.
@javidx94 жыл бұрын
Thanks man!
@saltyyolk99346 жыл бұрын
I was thinking for couple of years to make video on this. But you did it.
@aodfr6 жыл бұрын
I didn't know you could do a painter algorithm sort like that. That pretty cool. I would suggest implementing a depth buffer because it would make sorting of triangles easier and its cheap and all of the glitches would disappear.
@javidx96 жыл бұрын
You can get away with it "to a certain extent", and providing your polygons are small enough. You'll see I address the issues in a later part of this series.
@aodfr6 жыл бұрын
@@javidx9 Sorry for the late reply. Yes I saw it. It was quite informative. Thanks for the series keep up the good work.
@pikuma5 жыл бұрын
"Fill Triangle" is a very interesting problem. It would be nice to go over it sometime.
@pikuma5 жыл бұрын
...aaaaaand I just noticed you went over it in a later video. Thanks. :)
@fckyo333ujhjjkrrrr6 жыл бұрын
Thank you Javid, very cool
@javidx96 жыл бұрын
Thanks dayyan, np!
@goga.games182 жыл бұрын
"lets face it games made with cubes are incredibly boring" Minecraft sweating intensifies
@Deadener3 жыл бұрын
"We'll have to use a hack to render our triangles without a depth buffer" [The PS1] has entered the chat
@drjubierre4 жыл бұрын
Really amazing series, thanks for creating such an interesting content. By the way, I was also surprised that you used the left-hand rule for vector direction when explaining the cross-product!!
@accuwau2 жыл бұрын
paused this to just start getting good at math on some weird website thank you for finally giving me a reason
@MacShrike6 жыл бұрын
WOhoo! shwishing through this with you. And yes, I am encapsulated =)) Thanks again.. again
@laenprogrammation4 жыл бұрын
6:41 z component should be the other side. because if you make your cross product in these coordinates, XxY will be on the -z axis
@sketchwarehelper2721 Жыл бұрын
23:18 [sobs in minecraft]*
@molnez2 жыл бұрын
23:14 Sick Minecraft burn.
@JacobMoen4 жыл бұрын
"It's normally normal to normalize a normal" - well done, mate :)
@kaylenbates50106 жыл бұрын
"Games made from cubes are incredibly boring..." Are you jabbing at Minecraft? Lol
@javidx96 жыл бұрын
Meeeeee?
@sidtheloser3 жыл бұрын
@@javidx9 😂😂 yesssss yoooooou 😂😂
@damjandjordjevic19946 жыл бұрын
wow, you make it look so simple :)
@javidx96 жыл бұрын
Hi Damjan, I appreciate that, but that's the curse of KZbin! Everything looks simple when condensed to a short video. The subject matter is complicated to those who have never considered before.
@jolesco6 жыл бұрын
Great video series...keep up the good work, I want to make a T-shirt with the words: "It's normally normal to normalize a normal"
@javidx96 жыл бұрын
Thanks jolesco!
@dheerparekh13056 ай бұрын
0:03 bro is staring into my soul
@FUNktshnl3 жыл бұрын
Typically, coordinate systems are defined the other way around, so that if x is to the right and y is up, the z-axis is towards you (out of the screen, not further in). Nevertheless this is just a minor detail - thank you very much for this 3d series, the insight is mind-blowing!
@ZeroPlayerGame4 жыл бұрын
Note: the calculation you do for normals can be reasonably simplified by calculating a normal in screen-space, and looking at its Z component. Projective geometry is nice like that. EDIT: this only makes limited sense mathematically, for example, if you'd need the non-normalized normal, it wouldn't really work. But it's apt enough for this case; after all, the Z direction in screen space is exactly line of sight.
@survivalizeed3 жыл бұрын
Thank you! I already learned a lot from your tutorials!
@compaqdisc63626 жыл бұрын
If you are having issues with different triangles being rendered on different launches, then initialize vCamera to { 0.0f, 0.0f, 0.0f }
@pilotandy_com3 жыл бұрын
I'm just going through this now. Thank you! it makes my normal culling work great!
@DiamondANDI4 жыл бұрын
2:00 The first 2 arrows should be perpendicular to the line representing the bottom of the right face of the cube
@RoddyDev6 жыл бұрын
I don't program on that language at all, but it's gonna be helpful in the day I'll start learning it, thanks for the awesome video!
@javidx96 жыл бұрын
Hey thanks Roddy! I try to make my videos "reasonably" language independent, its more about the method than the syntax, so hopefully people can still take ideas from them.
@TheCodeMaster6 жыл бұрын
Another excellent video! Very helpful!
@javidx96 жыл бұрын
Thanks Code Master!
@Cole-ek7fh5 жыл бұрын
27:45 "s off" stands for "smooth shading off". just a guess.
@Ruxify6 жыл бұрын
I seem to have a good understanding of the 3D rasterization pipeline and have written a few software renderers with lighting, shadow mapping, and texturing... but triangle clipping is something I can't seem to understand/haven't figured out how to do properly yet. Can't wait for next video!
@javidx96 жыл бұрын
lol Ruxify, clipping is a little confusing, hopefully I can demonstrate an algorithm that clears it up...
@Ruxify6 жыл бұрын
Well I'll be damned, I think I just figured it out; and of course it would be insanely simple.
@johnnyhoran93695 жыл бұрын
23:17 Minecraft: Am I a joke to you?
@zeiksz5 жыл бұрын
Best Vimto-ad... ever... :)
@aptech29336 жыл бұрын
Reminds me of a documentary I saw about the guys who made the video game elite in 1984 I think the first true 3D graphics game.
@javidx96 жыл бұрын
It definitely has an elite vibe! One of the first games I ever played :D
@aptech29336 жыл бұрын
Did you see the short documentary on the making of the game? they programmed the whole thing in assembly. :D
@aptech29336 жыл бұрын
kzbin.info/www/bejne/faG6oHlrqruamKM
@gabrielsilverio11926 жыл бұрын
I hadn't seen this documentary, but Elite was the first thing that crossed my mind also. Thank you for sharing!
@anandsuralkar29475 жыл бұрын
I came up with my own algorithm for sorting triangles for depth order never knew that its already there for me