Figura

Figura

509k Downloads

Arms parent types does not render in first person if the type of their parent is body, etc.

Gakuto1112 opened this issue · 12 comments

commented

Description

Custom models whose render type is RightArm or LeftArm does not render in first person if the type of their parent is Body, Head, etc.

Screen shot when occurring this issue

(Of course, I do not have invisible portion effect.)

If you make an avatar model with a following structure, its arms will be rendered.

player_model.bbmodel
  ├ Head (group)
  ├ Body (group)
  ├ Right Arm (group)
  ├ Left Arm (group)
  ├ Right Leg (group)
  └ Left Leg (group)

However, if you make an avatar model with a following structure, its arms will not be rendered.

player_model.bbmodel
  ├ Head (group)
  ├ Body (group)
  │  ├ Right Arm (group)
  │  └ Left Arm (group)
  ├ Right Leg (group)
  └ Left Leg (group)

I have prepared two simple example avatars to confirm this issue. The first one's arms will be rendered in first person, but the second one's arms will not be rendered in first person. The difference of two avatars is only their model structure.

Expected behavior

The arms of both of two avatars will be rendered.

Affected version

Only for 0.1.0. This issue did not happen when rc.x.

Environments

  • Minecraft 1.20.0
  • Fabric loader 0.14.21-1.20
  • Fabric API 0.83.0+1.20
  • Figura 0.1.0+1.20
  • (no other mods)

Attachments

commented

I heard that this change is for performance improvement in Discord. I was convinced. Thank you.

commented

work as intended, the body part is not rendered in first person, meaning its children (the arms) wont render as well

commented

yes, thats a misconception that a lot of people do, parent parts are not meant to be stacked inside each other
body is for body, arms is for arms
having the arms inside the body, they are copying the body and the arms parent transformations

commented

Thanks for mentioning my issue. I was confused because there is no information about this change. Actually I thought it was a bug.

Do you mean that I must move arm models out of body parts? Hmm... To be honest, I think that it is not easy because I have made many animations assuming the arm models are in body parts.

commented

i think, arms being part of a body makes sense from real life experience (Head, Legs, Arms, etc. are, i'd say, generally considered to be attached to body) and nothing stops you from putting something a particular way in blockbench

commented

thats a misconception that a lot of people do

If you think so, I think you need to announce this for avatar creators. They (includes me) might be confused when they start porting their avatar to 0.1.0. I appreciate you if you also mention how to fix it.

commented

technically it is, as both the figura avatar wizard and blockbench player skin have the arms separated from the body

commented

yet thats not how figura reads it
it may work? yes
however once the body stops rendering, the arms will also stop rendering, due to body parenting

commented

uh, i am not saying that it is wrong, i am saying that it would clear up some confusion if you mention how it changed (because it was different in rc.14, was it not?)

commented

I cannot agree with this change because there is a big problem in model animations.

This is an example animation gif with arm models are inside of the body part.

animation_1

If you move arm models outside of the body part, the animation will be following gif.

animation_2

Afterwards, if you move the pivot of the arm models to the center of the body part, the animation will be following gif.

animation_3

What I want to tell is that it is impossible or very difficult to reproduce first animation if arms are outside of the body part. Therefore, not all animations can adapt this change easily.

commented

having the body and arms parented to a common, non-keyword group, and rotating that group instead of body/arms would replicate the first iamge

commented

I see. Thank you very much for your advice! It seems that I need to adapt this if this change is intended.
Would you ask one more question? Why did you make this change? I appreciate if you answer.