Jump to content

Recommended Posts

Posted

I am looking for a way to render a part of a block, for example slabs and stairs (but from other blocks that don't have their stair variants as well (basically same textures on a different shape).

I have found a way to render the model via this code, and rendering the model does work, but I am having issues with finding a way to render only part of the said block, is there a way to "clip" the rendered model? Or at least get the faces and render them on a clipped model?

Posted

I am not looking to create stairs specifically, I'm looking to apply (almost) any block's faces to different shapes, also I want to do multiple shapes as well, not something I'd want to manually model and skin for every possible combination.

  • Confused 1
Posted

I'm not sure if you're joking?

I'm looking to render faces, obtained from a block model to a voxel shape that is determined at runtime. I would prefer not to do (4096 * (blocks I want the model for)) models, if there's a way to render those at runtime.

Posted

Look at what tesslateBlock() does. The simple version without ambient occlusion is in pseudo code;

initialise the render state from the model and other passed parameters;
foreach direction {
    get the light for that face;
    get the quads for that face;
    put the quads with the lighting parameters in the vertex consumer;
}
do the same for quads that are not attaced to a face;

You want to do the same code but only for the faces you want to draw.

I have no idea how you would identify which of the extra quads not attached to a face you need to draw unless you know specifics about how the quads were baked.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Posted

Hm, rendering the faces would be enough for me (at least for the time being), but I'm somewhat lost on the last part of the loop.

I see that the quads have a sprite attached to them, so I assume rendering a subset of that sprite would be what I want, and for that it appears I need to manipulate vertices in the quad.

Looking at the buffer code in VertexConsumer.putBulkData I was able to extract vertices that fit the face, so I'll try manipulating those and report back. Thanks for the tip!

Posted (edited)

I've got the rendering down (for a POC), if anyone needs the code it's available here, it procuces something like this:

ZympY8z.png

I think I'll also need to be needing to adjust the UVs a bit, but this is a great starting point. Now, I'm wondering if it's possible to obtain vertices from a VoxelShape? Looks like VoxelShape.bounds() returns AABB which fits my needs.

Looks like there's more to UVs though. There's UV0 and UV2 in the quad vertices, but UV2 seems to be used for overlay, and UV0 only has 2 floats, which seem to match texture uv0, which by the way, is not 0, nor does it go to 1. Instead values (for stone, for example) seem to look like this: 0.40629607,0.78134215; 0.40629607,0.81240785; 0.42182893,0.81240785; 0.42182893,0.78134215, which has me at a loss of what they mean, or what I am supposed to do with them to get the desired result

Edited by zskamljic
updated with newer info

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.