I Made a 3D Modeler, in C, in a Week
HTML-код
- Опубликовано: 8 сен 2024
- ShapeUp source code, demo, and more: www.danielchase...
Daniel’s Twitter: / danielchooper
ShapeUp was demoed in the Handmade Network Wheel Reinvention Jam Recap and at Handmade Seattle. ShapeUp was #1 on HN on May 5, 2024.
Demo, Source Code, and more info about ShapeUp: danielchasehooper.com/posts/shapeup/
looks like Womp3D
Is there a way to export?
Greetings Mr. Hooper. I felt really inspired with the simplicity of your modeling software to a point that I want to try it myself. Unfortunately, I don't have enough knowledge on computer graphics with C and I have no idea on how modelling works. Could you kindly recommend me some sources to learn more about the subject?
Thank you.
just out of curiosity how much graphics programming / graphics programs usual ui / graphics algorithms experience did you have when programming this ?
Algorithm recommending me a good video for once, must be bugged.
You must have been starving.
Same thing right here 😂😂😂😂😂
yt algorithm used to be so good 😭😭😭
lol same
A bug is sometimes a feature my brother
Only 1500 lines of C is just... wow. I hope someday I can code anything as simply and efficiently as you.
My efficiency is so bad, i wrote a code almost 700 lines long just for a TicTacToe game thats run in the console
@@shoodlerwhat did you write in those 700 lines?
@shoodler Share your code please?
It is 2024 lines of C (and raylib, without it it would be muuuuuch more). But still very impressive.
you're kidding, right? have a look at a real project
didn't need to flex that hard on the title, but dang that's impressive
That's largely deserved
Considering the amount of work this requires, I don't think he is flexing enough
it made me watch this video, I'm impressed he did all of that in 1800 lines of code
fr need to flex more this is insane
Came for the "in C in a week", stayed for the great explanations and visuals!
Your first video in 7 years and its a banger like this.
Bro I can't even draw pixels in C
Only way to figure it out is by doing it. I recommend sdl or raylib. Go forth and plot some pixels.
use SDL(2D) or openGL(3D) with glfw to create window
it's not that hard
@@Garfield_Minecraft then what
@@undeadpresident
1. Use SDL or OpenGL
2. Open window
3. ???
4. You made a 3D modeller or can draw pixels on screen
Learn it.
If this program has an option to use Perlin noise for making things, I'll call it a Minecraft mod!
This is how Dreams PS4 works too. Mostly. They actually voxelize the SDF and then render particles at each voxel. They also make it so that the CSG tree is just a straight line, it makes it possible to do a bunch of optimizations in the voxelizer.
Can you tell me more about it?
The animations were so extraordinarily sick, I liked them a lot
Thanks! My next video is about how I made them. Subscribe!
Happy it was recommended. Impressive stuff. Subscribed.
this would be great for a game-making game (like dreams or project spark), since it looks pretty intuitive and you can already control it with a game pad
So I’ve been working with 3D in Java and glsl too for about a year, been programming for 11 years. I’ve made my own engines but holy cow making a complete model editor in a week is very impressive. Makes me think someone has had a lot of practice ;) good job on the editor and the animated video.
Oh wow! Very inspirational! Thanks for making this video!
Great project and explanation. Hope to see you release more videos without waiting 7 years again!! Instant subscribe
The video I have coming out in 7 years is gonna be amazing
This is amazing! My favorite part of this is when you showed off at 3:30 that you can essentially change the quality of your shapes. This would be great to use for retro-style games in essence of PS1 and Nintendo 64!
Really amazing work. Liked and subscribed.
Dissing blender is wild
yeah it was a weird diss cause blender's method is better, i wouldn't want to make something and not know how many tris it has
this was a good showcase and impressive but it's not better than blender maybe that was too much ego
@@Criteon Ehh.... This is a simple information, it could give you. It has nothing to do with the modelling process itself. Even more, everything is pixels in two dimensions under the hood...
@@godnyx117 dude what?😭 ur talking to someone who actually models in blender, how can you say tris have nothing to do with the modeling process? And in the end omg what 😭😭😭😭😭😭
@@Criteon I didn't mean to offend you, sorry if it seemed like that. Let's try again. You said that you wanted to know the number of triangles a model has. What I replied is that, you can model with the way that is shown in the video and also, have the program display the number of triangles for the model. So, you are not forced to model a specific way and work with triangles directly. You'll just have the program display them if that's what worries you.
The last one. Our screens are 2D. Yes the model are treated as 3D, but the screen is 2D so under the hood, the pixels are drawn in a 2D dimension. The calculations just happen in a 3D environment.
@@godnyx117 that doesn't explain away how the youtuber "dissed" blender's method of working with triangles, as if it was an inferior method and he solved a problem
as for our screens being 2d yeah i know how 3d works, that doesn't mean tri count doesn't matter, so why are you saying this? there's literally no point in bringing that up
you can create a plane with 2 tris or with 2,000,000 and the engine will draw it out the same, BUT the plane with 2 tris will give you more performance
you can't just dismiss tris cause "everything is just pixels anyway" or whatever you said you just sounded ridiculous
From one programmer with the last name Hooper to another, good job.
man this is incredibly impressive, you have an amazing way of conveying knowledge.
Thank you!
Cool. My first go at graphics was an stl file viewer with opengl. Still not completely solid on how the boundary between CPU and GPU works, but it was fun learning. I got sidetracked thinking about how I could write shader code to solve linear algebra problems. Only later did I realize that's what a compute shader is lol.
I would be blessed if you could please make a line by line explanation video on this. It just looks so well built and production ready. ❤❤ Good job man instant subscribe for such amazing content eagerly waiting for more.
Haha, I love the cursor shape selection tactic. Some old software renderers with cursors like ultima underworld and system shock did basically exactly the same thing.
There's an extremely similar program called Womp 3D that's quite good and fun.
Impressive how similar a job you did
Man you are legend. I'm your fan from now on. Impressive work.
The biggest block of ray marching modeller is 'saving to mesh' feature.
If it isn't possible, it is just a fancy pixel zoo.
Marching cubes is a reasonable method, but its problem is the surface quality.
Maybe surface nets would work better.
Very nice! I was thinking of writing exactly this kind of editor that generates GLSL for a distance field raymarched game idea last year, but never did. I like your picking idea, I was planning to ray-test the original shapes instead, but it wouldn't work very well with soft-mins like you said. I also love the idea to triangulate for export, very nice indeed.
Very nice, has a lot of potential, well done.
Hit some bug with white screen after applying roundness to starting cube and clicking into the void.
Haven't tested yet, but I would be curious to see how quad remesh fairs with the marched cubed/voxelized mesh.
Features I would like to see:
- zoom in/out (preferably with mouse wheel) and middle mouse drag to pan
- splitting shapes into groups with settings (atm idk how you really apply cutting or smooth blending in this setup)
- support for more shapes + extrude (e.g. making cylinder out of extruded circle shape)
- add support for perlin noise deforms or even custom function deforms
- add support for some array modifiers (which should make thing more efficient in case of repetition)
Btw in case you didn't know already a good source for further research on this topic is Inigo Quilez.
Interesting approach having the shaders modified when adding a shape. I only used hand made shaders so all the shapes were "fixed" to what was in the code.
Have you thought of using buffers with shape definitions and then using loops inside the shader that process each type?
That seems to be more of compute shader approach rather than a graphics shader, but it might work.
love the raylib UI widgets!
Wow. I'm happy this was recommended to me. I use mainly for modelling, I try it out.
Thanks Daniel.
Very nice explanation! Saw the post on HN and really enjoyed it. Very cool project
Very cool! Reminds me of 3d software called 3dgo for SGI from like what feels a 100 years ago.. how times have changed.
Thank you!!! Very helpful tips. Saved me a lot of work!
Impressive, complex topic into a bite sized digestible format. You earned a sub my friend
I think it's a very nice concept for quick digital capturing of concepts/3d sketches even for CAD work (i''m a mechanical engineer)
This is insane.
A whole new way to think about working in 3D.
I am gonna give it a try.
Great work 🙂
Man that’s some impressive work.
I don’t know why RUclips suggested this to me, but, thank God, because this is simply AWESOME! Congrats bro.
Dope! Looks great
1500 lines is incredible, even with raylib as a rendering backend. good stuff
This is like when Inigo Quilez demonstrates 3D modeling in Shadertoy
Dangggg, as a beginner programmer in C++, this goes hard, amazing work
Amazing work. Please make a voxel based 3d sculpting app next. The world could really use a good sculpting app.
Incredible work!
It's rare getting recommended some good content by yt. Keep up the good work 💪
very impressive, good job
This is god damn amazing for one weeks worth of work!
Huge props
Costructive Solid Geometry in a week? Much better raymarching distance field is great value with obj export. The dynamic shader is awesome!
This is incredible! I've been looking for an SDF modeler for some time now
I'm mad, your actually tempting me to pass parameters into my glsl thing. I feel like I caught a stray with the recompile comment for a recent project of mine.
this is awesome, thanks for sharing. Also I really enjoyed your explanation of SDF's
Very impressive work! Good techniques! Keep up the good work. How did you make the visualization animations?
My next video is about how I made the animations. Subscribe!
@@danielhooper already did!
thanks for sharing ive tried using cad before and stopped in my tracks. generative models are the future and this seem to be a large leap in that direction.
Just 1500 lins of hand written C + 300 of shader code, for all these features? Insane!
This is so impressive!!
Amazing!
No way. You're awesome bro.
That’s extraordinary. Very well done sir
Wow that looks great. Maybe finally I can upgrade from Sketchup 8 !
I love how the font immediately made me think "raylib" xD
But who knows, behind these 6 days there are years of working and learning ?!
yep, a little of clickbait on this
Amazing work, glad to see some talented people in this world
This is brilliant! 👏
absolutely insane, keep up the hard work >:D
Finally quality content
wonderful, encouraging!
Took him 7 years to post another video, and well; it's a banger
Hi Daniel,
I must say, your work is truly amazing. I can see the potential for even greater improvements with more time invested in it.
I have a personal request. I'm interested in creating software eventually. While I know many sources suggest using Qt or Python for software development, I'm particularly interested in learning how to build a simple application like a Calculator or Notepad with graphical elements using C, C++, and Python. I understand this might seem like using complex coding for a simple task, but I'm keen on understanding how different languages come together in a project. Could you possibly create a comprehensive video tutorial covering this topic?
Thank you in advance, and apologies for the lengthy request.
Best regards
Honestly that looks kinda incredible especially as its done in C
why is it especially incredible because it's written in C? it's not some kind of esoteric rocket science
Great video!)
that is awesome
You have great potential, use it well
Good to see you back Daniel
really cool project ngl, amazing work
Very impressive!! 👏👏
AN SDF 3D MODELER? THAT GENERATES GLSL CODE! I LOVE IT! finally someone makes this!
Really cool Daniel!
I love the idea , looks like dreams in ps4 where you can make modeling with controllers
1 week you say, but the knowledge you possess must have taken years of studying and experimentation.
Cool work though, hope this is open source.
Computer graphics is so fascinating, a day doesn't go by that I don't regret taking the subject for granted during college (although the syllabus was outdated).
this is a gem.
Amazing project
This is great work, especially for a week! For me to implement just basic shapes in Blimey took much more time.
wow ! great job !
Daniel, you are insane.
Thank you
Great video
Get good topology and UVs and it would be a serious contender in the 3d modelling space
Amazing!
You’re new here? This looks very good.
This video is gonna blow up real soon!!
Great work fam!
This looks so good bro i will try it
A week?? Ain't no way bro, that's awesome!
Saw the title of video, immediately subscribed.
whaaaaaaaaaaaaaaaaat a SDF based modeling software?? this blew my mind. good youtube recomendation, hope everything goes well for you
Could you make a video showing how you set up the UI and possibly how to deploy it as a packaged app or executable?
Man! This is freaking awesome!!! Respeсt!!
Wow! This is really impressive!🍀
pretty awesome