Jump to content

[1.15.2] Rendering a Ship


Obeeron

Recommended Posts

Hello,
I would like to make a mod allowing you to build sailaible ships such as Archimedes’ Ships or Davinci's Vessels.
I would like to render the ship into its own dimension with few chunks loaded and then overlap the rendering of the oveworld and this other special dimension in which the ship would be.
However I really don't know what to search for and where to read about it so I'm hopping some of you may have ideas on how I could get started with this and what are the words I should search for.
Thanks

Link to comment
Share on other sites

Good luck. This sort of thing is very complicated and you're not the only person trying to do this. I think there've been two others posting about it on this very forum in the last month.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Yep.. but I got a lot of time and motivation so anything would help. I'm not afraid of making a lot of researchs but I just have no idea of what I should look for and every mod that achieved that is in 1.12 or below. Once I know what to search for at least I'll get something to work on.

Link to comment
Share on other sites

I searched "ship" and this was the second through fifth results

 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I apologize I should have recognize that. I swear someone else posted about it relatively recently as well, but the issue remains that you're going to be largely on your own.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Yes unfortunatly.. The thing is I when you search for things like "Minecraft forge world rendering" there is nothing helping that comes. So if I would even know the name of some classes of that may help or some kind of a mechanic I'm not aware of that I could try to research on, this would actually help so much because even if  I'll still have to do all the research for how to use it, I would have an idea of what to use. Cause right now I'm in that state where I'de like to start experimenting but I don't even know what to experiment with.
I'm just hopping for someone that already tried something like that to tell me "hey you should try to do that with that class, also beware that this will not work so go look for how to use that"

Edited by Obeeron
Link to comment
Share on other sites

10 minutes ago, Obeeron said:

Little up ^^

Have you done any research or worked on this at all yourself since your last posting?

If you have, it would better promote your issue to share your findings/progress.

I think people would be more attracted to your issue if they felt you were actively pursuing it! :)

Edited by Ugdhar
Link to comment
Share on other sites

Okay so I've managed to render a single block using MatrixStack and IRenderTypeBuffer but there are many things I used I don't understand how they really work such as :
- Why does rendering needs "IRenderTypeBuffer", why is it a buffer ??, does rendering uses multiple buffers ?
- What it the "Impl" class that implements IRenderTypeBuffer, what does it even stand for ?
- What is a MatrixStack ? I understood it's for translating blocks, rotating and scaling but why is it a stack, why do we need a "stack" for it ?

- Is BlockRendererDispatcher the best way to go for achieving rendering of moving structures ?

I've spent a long time going from classes to classes but it always come down to these questions that I can't find answer to.

Link to comment
Share on other sites

1 minute ago, Obeeron said:

does rendering uses multiple buffers ?

Yes. Transparent things and opaque things need to be drawn in different passes as they have different sorting orders.

(The HUD is also a separate pass)

2 minutes ago, Obeeron said:

What it the "Impl" class that implements IRenderTypeBuffer, what does it even stand for ?

"Impl" is an abbreviation of "implementation." Use your IDE to find implementations of IRenderTypeBuffer.

3 minutes ago, Obeeron said:

What is a MatrixStack ? I understood it's for translating blocks, rotating and scaling but why is it a stack, why do we need a "stack" for it ?

Because you need several transformation matrices applied one after the other to handle certain types of rendering. Think about an item that lays flat on the top surface of a block (campfires do this). The item renderer assumes that the item sticks up vertically but the campfire wants to render it horizontally. We already have a transformation matrix to counteract the player's position away from 0,0,0 but now we need another one to rotate the item to lay flat...

 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Okay so right now I get an instance of the buffer with :

Impl renderTypeBuffer = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer());

So if I'm correct, I'm using Tessellator's buffer (what is it usually used for ?) and you said that :

Quote

Transparent things and opaque things need to be drawn in different passes as they have different sorting orders

So using only this instance of Tessellator's buffer, will I be able to render both solid blocks and transparent blocks ?

Regarding MatrixStack, looking at the code, when using matrixStack.push() it just clones the last entry, and when doing matrixStack.pop() it just removes it. So its only purpose here is to be passed as parameter for "blockRendererDispatcher.getBlockModelRenderer().renderModel(..., matrixStack, ...)", so, correct me if I'm wrong, as I'm only using one "Entry" (because I only do one push/pop) and because all operations such as translate, scale, rotate, only affect the last entry without creating a new one, the stack structure isn't really needed here, it would only be needed in special cases that I won't have to interact with right ?

Link to comment
Share on other sites

I've never dug into the rendering system more than I need to, which means I've never messed with the things you're messing with.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.