Moo-Ack-Productions / MCprep

Blender python addon to increase workflow for creating minecraft renders and animations
https://theduckcow.com/MCprep
GNU General Public License v3.0
280 stars 26 forks source link

Texture pack swap compatibility with BSS #363

Open vidhaanyadav opened 1 year ago

vidhaanyadav commented 1 year ago

Check against existing requests

Describe the context

Pretty much the title, The BSS (Boxscape Studios) pack is a pack with mobs and items, blocks, etc. A lot of people prefer to use it, actually most of them, since BSS is actually a continuation of the Rymdnisse pack, which I'm sure you've heard of, and it just has a lot more features than the things that come with mcprep(no offence intended). I'm not saying that you need to add compatibility for texture swapping with every pack in existence, but it would be appreciated to add compatibility to the BSS pack for things such as the blocks, rigged elytra, mob rigs, items, maybe some of the custom items such as tents as well because those likely aren't textured by hand but just use the already-existing wool and plank textures.

How do you imagine your feature works?

I imagine that it would just be able to find anything from the BSS pack and also affect them in texture pack swapping. Most custom items such as televisions wouldn't work, but things like chairs and tables which probably use the pre-existing minecraft textures, and only have custom models, would be possible. This probably wouldn't happen by the normal method of hitting the swap texture pack button, maybe that would only swap stuff from MCPREP, and there would be a second button for swapping stuff related to BSS. This wouldn't be too complicated to figure out as a user, and would help if you wanted only the stuff from BSS to be swapped but not everything else.

What existing workaround (or closest thing to a workaround) do you have today (within Blender, MCprep, or any software)? If there is no workaround, explain why you feel this way.

There's a sort of half-workaround for this, since you could just make a duplicate of the bss pack and swap the textures manually and use that version of the bss pack when you wanted to use that texture pack. But that would be tedious, especially if you wanted to use multiple different texture packs instead of just one(I wanted to use the barebones pack with the abbpbr for minecraft-style trailers.) but if you were making a pvp-related animation with differrent POVs, all with different texture packs, it would be hard. Also people who are new to MC animations will be extremely frustrated by this.

StandingPadAnimations commented 1 year ago

The problem with supporting texture swap with BSS is that BSS objects and OBJs are textured differently.

OBJs are exported with separate textures (except in Mineways, we'll get to that in a second), which is how Blender textures them. BSS uses a texture atlas (a giant image with each texture on it), and then uses UVs to get the correct texture.

Texture packs are separate image files, so texture swapping requires models to use separate texture images. That's also why Mineways OBJs don't work with textures swap by default (that is changing soon though) and require explicitly exporting with separate textures. Supporting BSS for texture swap would mean changing the UVs of BSS objects, which brings another issue:

How do you differentiate between BSS objects and normal objects?

Don't get me wrong, this feature would be amazing, but implementing it would be extremely complicated, and brings more questions then answers.