Kingdom-of-The-Moon / FiguraRewriteRewrite

rewrite of the rewrite of figura
GNU Lesser General Public License v2.1
1 stars 1 forks source link

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

Open Gakuto1112 opened 1 year ago

Gakuto1112 commented 1 year ago

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

Attachments

Francy-chan commented 1 year ago

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

Gakuto1112 commented 1 year ago

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.

Francy-chan commented 1 year ago

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

Gakuto1112 commented 1 year ago

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.

Francy-chan commented 1 year ago

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

lenrik1589 commented 1 year ago

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

Francy-chan commented 1 year ago

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

lenrik1589 commented 1 year ago

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?)

Gakuto1112 commented 1 year ago

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.

Francy-chan commented 1 year ago

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

Gakuto1112 commented 1 year ago

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.

Gakuto1112 commented 1 year ago

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