Doubt many people will look at this, but what the hell, as long as it doesn't get pulled I'm proud to show this off.
This is the 3D modeling and animation program that I worked on with 3 other people this semester. Half the stuff you see here was added in the last 24 hour period. Sweet!
I worked on the UI portion of this, which is why I'm showcasing it. Yeah, I realize it's not beautiful. But it's Java, gimmie a break. I nabbed the Translate, Rotate and Scale icons from GIMP and made the other ones myself. I also worked on some of the Undo/Redo stuff, loading meshes and textures, some animation work, and little things here and there. It doesn't sound like much, but do you realize how unpleasant Java is for making GUIs?
What makes this a nifty program to work with? Well, let's see. You can add pre-made shapes and tweak their geometry to suit your whim, I started this mouse and lava sphere with a cube, cylinder approximation, and icosahedron. You can also import OBJ files that other people have made and tweak those to your liking.
You can then subdivide. For people who don't know what subdivision is, think of it as a smoothing function that applies to 3D data, in the same way that a picture or video might be nicely expanded if you display it at a higher resolution--the pixels don't just get bigger. So it takes every triangle in the object and splits it up into 4 triangles occupying the same space as the first one, and then tweaks their orientations so the figures become smoother. In the figures here, I subdivided 4 to 6 times, which means there are 4^4 to 4^6 times as many triangles... about 50,000 for each the ball and mouse shell, and 10,000 for the scroll wheel. The really cool thing about it, though, is you don't just make more triangles, you preserve the original structure too, so you can edit earlier levels (you can see the wireframes for the shapes at very coarse edit levels) and the changes smoothly filter down to all the generated triangles. Grab a triangle on the mouse shell and pull it out, for example, and you can watch all the more recent, detailed triangles bulge and warp out smoothly. Just in case, you know, you decided that you want to make the surface a bit flatter, or have it narrow a bit towards the front.
You can also grab your objects, and groups of objects, and apply transformations to them. Move them around, scale them in funny ways, turn them in all sorts of directions, and they stay there. Move along the timeline at the bottom and make keyframes of different positions and orientations at different points in time and you can watch it smoothly interpolate between the specified times, making an animation right before your eyes.
But the deal-sealing thing we added in the last 9 or so hours was the texturing. One of my partners spent hours working at it to get textures to draw properly, I added buttons and dialog boxes to load up files for each object. Then we worked together with to make that panel on the right side which shows how the texture fits the mesh, and lets you move vertices around (with real-time preview!) to "skin" your model with the texture in the way you want.
Anyway. What you see here is a rough modeling job I just did of a mouse (with no buttons, apparently) bearing a scroll wheel, and a random ball of lava to show off the textures. The wireframes don't have to be drawn, but I left them in there to showcase the multiple levels of mesh edits you can do, as well as the texture skinning selection.
This is the 3D modeling and animation program that I worked on with 3 other people this semester. Half the stuff you see here was added in the last 24 hour period. Sweet!
I worked on the UI portion of this, which is why I'm showcasing it. Yeah, I realize it's not beautiful. But it's Java, gimmie a break. I nabbed the Translate, Rotate and Scale icons from GIMP and made the other ones myself. I also worked on some of the Undo/Redo stuff, loading meshes and textures, some animation work, and little things here and there. It doesn't sound like much, but do you realize how unpleasant Java is for making GUIs?
What makes this a nifty program to work with? Well, let's see. You can add pre-made shapes and tweak their geometry to suit your whim, I started this mouse and lava sphere with a cube, cylinder approximation, and icosahedron. You can also import OBJ files that other people have made and tweak those to your liking.
You can then subdivide. For people who don't know what subdivision is, think of it as a smoothing function that applies to 3D data, in the same way that a picture or video might be nicely expanded if you display it at a higher resolution--the pixels don't just get bigger. So it takes every triangle in the object and splits it up into 4 triangles occupying the same space as the first one, and then tweaks their orientations so the figures become smoother. In the figures here, I subdivided 4 to 6 times, which means there are 4^4 to 4^6 times as many triangles... about 50,000 for each the ball and mouse shell, and 10,000 for the scroll wheel. The really cool thing about it, though, is you don't just make more triangles, you preserve the original structure too, so you can edit earlier levels (you can see the wireframes for the shapes at very coarse edit levels) and the changes smoothly filter down to all the generated triangles. Grab a triangle on the mouse shell and pull it out, for example, and you can watch all the more recent, detailed triangles bulge and warp out smoothly. Just in case, you know, you decided that you want to make the surface a bit flatter, or have it narrow a bit towards the front.
You can also grab your objects, and groups of objects, and apply transformations to them. Move them around, scale them in funny ways, turn them in all sorts of directions, and they stay there. Move along the timeline at the bottom and make keyframes of different positions and orientations at different points in time and you can watch it smoothly interpolate between the specified times, making an animation right before your eyes.
But the deal-sealing thing we added in the last 9 or so hours was the texturing. One of my partners spent hours working at it to get textures to draw properly, I added buttons and dialog boxes to load up files for each object. Then we worked together with to make that panel on the right side which shows how the texture fits the mesh, and lets you move vertices around (with real-time preview!) to "skin" your model with the texture in the way you want.
Anyway. What you see here is a rough modeling job I just did of a mouse (with no buttons, apparently) bearing a scroll wheel, and a random ball of lava to show off the textures. The wireframes don't have to be drawn, but I left them in there to showcase the multiple levels of mesh edits you can do, as well as the texture skinning selection.
Category All / Miscellaneous
Species Unspecified / Any
Size 1280 x 770px
File Size 294.1 kB
You didn't even get to see any of the cool stuff in action! Selections which decrease the intensity of the edit the further it is from the center. A variety of interpolation methods. Rotations which seek out and travel along the shortest angular rotation between the start and end target! ;o;
I mean, I guess we could polish it and release it... but like any program cobbled together at the last minute by college students, it's got bugs, and it crashes if you try to load, and it's inefficient, etc.
This was for the introductory graphics programming courses too, I'm taking a more advanced one in the upcoming semester.
This was for the introductory graphics programming courses too, I'm taking a more advanced one in the upcoming semester.
"Smart" rotation can sometimes be damn frustrating, though. Say I tell the ball to be at 0 degrees, and then 5 seconds later, to be at 360 degrees. What does it do? It doesn't turn at all. What if I want it to rotate to 270 degrees? It rotates -90. What if I tell it to rotate 180 along the X, Y and Z axes? Because that takes it back to its original orientation it doesn't move. There's no easy way to tell it to spin 6 times around the Y axes, you have to pick 12 frames and tell it to alternate between 0 and 180 degree orientations, and hope it doesn't just rotate back and forth by 180!
o.=.o
i so want to play with that program. is it compatible with that raytracer you were working on?
oh and on a smal lsidenote o nthe ray tracer just to let you know yours did something that most raytracers have a hard time doing. i noticed it was capable of DOF depth of focus. most biased ray tracers normally can't even do that.
i so want to play with that program. is it compatible with that raytracer you were working on?
oh and on a smal lsidenote o nthe ray tracer just to let you know yours did something that most raytracers have a hard time doing. i noticed it was capable of DOF depth of focus. most biased ray tracers normally can't even do that.
Not compatible, sadly. We don't have a way of saving or exporting anything D: and our ray tracer doesn't work with textures.
DOF is easy to do, you just tell it to start at a random point on a disc (simulates a lens) rather than a point, and have the rays converge at a certain distance.
DOF is easy to do, you just tell it to start at a random point on a disc (simulates a lens) rather than a point, and have the rays converge at a certain distance.
FA+

Comments