Jump to content

(Updated 10/16) Teaser - 3D Models in Minecraft - Work-In-Progress


jakj

Recommended Posts

Well yes, from the end of the video I assumed we were working with Tayledras, which has sethka or shethka instead.

But anyways, very cool, and the GUI free bit is, if not easy, interesting and clever instead. Gives a bit more immersion and a slightly magical feel to something that is in fact quite technical.

Link to comment
Share on other sites

  • Replies 58
  • Created
  • Last Reply

Top Posters In This Topic

Ah, I didn't recall the Hawkbrother form of that term. Good call.

Yes, the entire mod is themed to do with the mind, some of it actually a bit creepily, and other than the dreamcatcher, everything looks abstract and eccentric, without any truly "representative" icons. Just wait until you see how I implement the tranformation tools: It'll twist your brain, and yet, once you try it for a minute or two, suddenly using a GUI to do such a thing feels rather odd.

Link to comment
Share on other sites

Heyla!

Would you happen to point us at a decent 3D model software package that can be used with the object format you're using?

I figure the ultimate 3D software (not counting the super-expensive commercial packages used by professional studios) is Blender.

As for the file format: http://en.wikipedia.org/wiki/Wavefront_.obj_file

(Seems open and widespread, so you should just be able to use Google to find "<3d program name here> wavefront obj converter".)

Link to comment
Share on other sites

Heyla!

Would you happen to point us at a decent 3D model software package that can be used with the object format you're using?

Just a guess, but I'd go ahead and say Blender is awesome for a free soft. It can make pretty awesome animations too, if it ever comes to this... :D

Edit : I've apparently been ninja'd.

Link to comment
Share on other sites

It can make pretty awesome animations too, if it ever comes to this... :D

I'm not going to do frame-by-frame animation, nor physics-based animation. The animation I'll be including is just a modifier on the transformation.

(For example, you can already say "rotate around the Y axis by 10 degrees", and you can simply animate that by saying "rotate around the Y axis 10 degrees every 250 milliseconds".)

I'm also not going to implement advanced 3D features like materials and bump mapping: The only parameters accepted are model vertices of three coordinates and (optionally) texture vertices of two. Normals will be recalculated when loading the file and user-supplied normals will be ignored.

Link to comment
Share on other sites

I can not wait, I will have to start looking for a lightwave object (.lwo) to wavefront obj converter, as I have lightwave, (was a present from a company I did a lot of lightwave work for, as well as salvage of their old data from an amiga 2000 ;) I love building both alone and co-opting with other people in minecraft and have loved modeling in lightwave for years, so this will bring the two together finally, Thanks so much for doing this!!!

Link to comment
Share on other sites

heh good luck. lightwave will not do that as best I have seen. I have heard that newer versions will export DXF files. and .wrl files are kinda like html files but with tons of co-ordinates, thus why I was hoping it would work with the mod. I can model something and post the .wrl file, so you can see what it is like, as for attempting to convert, I saw that blender would do this, so I am grabbing it to see what it can do.

Link to comment
Share on other sites

Unfortunately, some things to do with blocks are tied to the block type itself, not the individual block (meaning it can't be set differently for different block instances). Collision boxes I should be able to do, because the function takes the X/Y/Z of the block as a parameter, but I'm not sure yet about other things.

Link to comment
Share on other sites

Unfortunately, some things to do with blocks are tied to the block type itself, not the individual block (meaning it can't be set differently for different block instances). Collision boxes I should be able to do, because the function takes the X/Y/Z of the block as a parameter, but I'm not sure yet about other things.

Is that why wooden slabs used to require a pickaxe to break, since slabs were (they might still be) the same block with different meta data for wood, stone, cobblestone, etc... slabs?

Link to comment
Share on other sites

No, that's because he copied/pasted the slab code and was too lazy/terrible/stupid to check his work. But you're thinking in the right terms, yes: Material is a member variable of the block class, so it can change at any time but can't vary intelligently based on metadata.

Link to comment
Share on other sites

No, that's because he copied/pasted the slab code and was too lazy/terrible/stupid to check his work. But you're thinking in the right terms, yes: Material is a member variable of the block class, so it can change at any time but can't vary intelligently based on metadata.

I see. So if I wanted to add 6 new brick blocks (Let's say red, orange, yellow, green, blue, and violet), I would add a brick block and then use metadata to specify what kind of brick?

Link to comment
Share on other sites

Yes, if they all are the same material, hardness, and blast resistance, and all have the same behavior (in this case, simple block), you would add one block and use metadata to specify the colour.

(You could even do it as a re-implementation of the existing brick block by saying "Block . blocksList [ Block . brick . blockID ] = null ;" and then instantiating your block at the same ID, but I don't recommend that, because most existing recipes requiring bricks would not automatically use your type of brick, and another mod might already have replaced that block and your mod would obliterate that.)

But if, for example, you wanted some of your bricks to be brick slabs instead of bricks, or stairs instead of bricks, or whatever, you'd have to use a different block ID.

If you want to see metadata in action, go look at gotyaoi's stained-glass mod.

Link to comment
Share on other sites

Yes, if they all are the same material, hardness, and blast resistance, and all have the same behavior (in this case, simple block), you would add one block and use metadata to specify the colour.

(You could even do it as a re-implementation of the existing brick block by saying "Block . blocksList [ Block . brick . blockID ] = null ;" and then instantiating your block at the same ID, but I don't recommend that, because most existing recipes requiring bricks would not automatically use your type of brick, and another mod might already have replaced that block and your mod would obliterate that.)

But if, for example, you wanted some of your bricks to be brick slabs instead of bricks, or stairs instead of bricks, or whatever, you'd have to use a different block ID.

If you want to see metadata in action, go look at gotyaoi's stained-glass mod.

Okay. That makes sense (I guess). So if I want to add multiple blocks that share the same properties, I would make a singe block class and use metadate to store textures and what the block drops. So it's like using a parent object in object based programming lanuages. I wonder if Eloraam does uses metadata with microblocks so that they don't take up 50 bazillion block ids?

Link to comment
Share on other sites

There are only four bits of metadata (16 values), so no, she stores it in the tile entity most likely. Tile entities and item stacks both use NBT to store effectively-infinite data, but it's a lot cheaper to do so in the tile entity since it's automatically cached in memory when the TE is instantiated, whereas the itemstack's NBT has to be read every single time (for example, every render frame).

That's why microblocks don't work with non-RedPower blocks: They are not actually blocks (because in Minecraft, no matter what, only one block at a time can be in a spot) but rather are just custom rendering, and the only way to get custom rendering on another mod's blocks is to reimplement and replace that mod's blocks (which for multiple reasons is not practical at all).

Link to comment
Share on other sites

It's really sad, though: What I'm doing is barely anything in terms of actual coding complexity. Most of my time is spent in delving into references and forum threads learning how all this stuff works: In the past couple of weeks, I've gone all the way through the history of OpenGL from version 1.1 to 3.1, learned vertex and fragment shaders, display lists, vertex arrays, and now vertex buffer objects, as well as the rendering pipeline and a crap-tonne else.

My actual code boils down to "call OpenGL functions to draw vertices". That's it. No, really. The Internet has seen fit to provide me with algorithms at need, particularly the ones to generate weighted vertex normals, to do AABB collision (much more efficiently than Minecraft's builtin functions), and ray/facet collision with backface culling.

I am proud to say, though, that I came up with my texturing algorithm all on my own: It takes any facet, rotates it to face forward, then tilts it to be perfectly vertical, and uses that to generate texture coordinates. This way, I can apply a texture to each facet individually and always keep the texture upright (so it matches the sides of vanilla blocks). I'm sure the Internet will provide me with a lovely projective-texturing algorithm for smooth surfaces when I get around to that.

Oh, by the way, in terms of what I'm doing being so impressive compared to Minecraft.....well, the algorithms I'm using were published as early as 1990, and none are less than 10 years old, almost five times as old as Minecraft itself, and they're efficient enough that they're still getting linked around and used by university students to this day.

(Just wanted to point that out, in case anyone here still harboured any delusions that Notch had any kind of promise as a programmer in general. I'd just like you people to think about the fact that I've learned about decades-old algorithms better than the ones in Minecraft, and Notch is older than me, is more educated than me, and (after the beginning, at least) had other people to help him at his work. Me, an absolute nobody, just doing this between Guild Wars 2 and driving a bus.)

Bitter? Maybe. Still good, though.

Link to comment
Share on other sites

That doesn't surprise me, honestly: Most people are lazy thinkers, and instead of exploring the world for the best it has to offer, they just assume that whatever they happen to experience is the best that there is. No matter how many things in the world there may be, that have been done by smaller and fewer than him, for the people for whom vanilla Minecraft is all they've ever seen, he hung the moon.

Link to comment
Share on other sites

still amazes me, I have a bit of skill with modeling, but that is it, I could not get an IDE running so modifying anything I have seen to see what it does, is out of the question. my world mods are just as simple as renaming files and making sure the code can handle the new name, nothing more. I guess I need to not give up my real world engineering and building skills heh heh, *best I have done so far is build a CNC mill from scratch with no plans, just observing how my manual mill worked. :(*

also I am impressed with your ability to actually do research, so little is taught about doing that. just how to pass tests, which is sad really.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Announcements

  • Anything claiming to be official Technic servers are not allowed here, for obvious reasons



×
×
  • Create New...