create3000 / sunrize

Sunrize — A Multi-Platform X3D Editor
https://create3000.github.io/sunrize/
Other
8 stars 0 forks source link

Joe doesn't kick or move in sunrize. #6

Closed coderextreme closed 3 months ago

coderextreme commented 3 months ago

Tried npx sunrize `pwd`/JoeSkinTexcoordDisplacerKickUpdate2.x3d but Joe doesn't move or kick the ball. See zip. Thanks! SunrizeJoeDoesntKick.zip

coderextreme commented 3 months ago

Try castle-model-viewer 5 for comparison. I will also test X_ITE.

create3000 commented 3 months ago

The HAnimHumanoid node has a MFNode field joints which must contain all HAnimJoint nodes, then skinning will work.

coderextreme commented 3 months ago

Ah, thanks. That makes sense, Joe often leaves off the joints field. Sigh.

On Wed, May 29, 2024 at 9:19 AM Holger Seelig @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

— Reply to this email directly, view it on GitHub https://github.com/create3000/sunrize/issues/6#issuecomment-2137534969, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFMJ54XCHA6LHSRPCLBTP3ZEXPWRAVCNFSM6AAAAABIEQ2ITSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGUZTIOJWHE . You are receiving this because you authored the thread.Message ID: @.***>

coderextreme commented 3 months ago

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. ...

Seriously, this has to be discussed.
There is nothing in the spec that says how the joints, segments, sites fields are to be used, especially to ignore animations or skin if the Joint is not included in the joints field.

The user code is there to define the skeleton and all joint, segment site nodes must be treated the same, that is rendered if in the user code. Whatever those other fields do I don't now from the spec so sure, platform dependent, but not free to ignore, I hope.

Thanks, Joe

-----Original Message----- From: Extensible 3D (X3D) Graphics public discussion @.> Sent: May 29, 2024 12:08 PM To: John Carlson @.>, create3000/sunrize @.>, @.> Cc: Joe D Williams @.***> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. Same for both joint animations and joint-to-skin point bindings?What is the connection? For skin, you can't ignore skinCoordIndex and skinCoordWeight fields just because the Joint is not found in joints. John, maybe try for what happens when just a few joints are left out of the llist. Does this not recognize the humanoid if no segments or sites fields? Whatever, the rules for use of those three fields should be consistentThanks, Joe

-----Original Message----- From: John Carlson @.> Sent: May 29, 2024 7:22 AM To: Joe D Williams @.>, create3000/sunrize @.> Cc: Author @.>, create3000/sunrize @.***> Subject: Re: [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

Ah, thanks. That makes sense, Joe often leaves off the joints field. Sigh.

On Wed, May 29, 2024 at 9:19 AM Holger Seelig @. @.)> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work. — Reply to this email directly, view it on GitHub (https://github.com/create3000/sunrize/issues/6#issuecomment-2137534969), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AAFMJ54XCHA6LHSRPCLBTP3ZEXPWRAVCNFSM6AAAAABIEQ2ITSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGUZTIOJWHE). You are receiving this because you authored the thread.Message ID: @.***>

coderextreme commented 3 months ago

So, I did some research. Here’s what tooltips says:

[joints accessType inputOutput https://www.web3d.org/x3d/content/X3dTooltips.html#accessType, type MFNode https://www.web3d.org/x3d/content/X3dTooltips.html#MFNode array, empty list] [HAnimJoint https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimJoint] The joints field contains a list of USE references for all HAnimJoint node instances found within the preceding skeleton hierarchy. Hint: order is irrelevant since names are contained in the original DEF objects. Hint: these USE nodes can be utilitized by inverse kinematics (IK) and animation engines. Warning: the number of contained <HAnimJoint USE='' containerField='joints'/> nodes at top level of HAnimHumanoid needs to match the number of corresponding HAnimJoint node instances found within the preceding skeleton hierarchy. Warning:* top-level HAnimJoint USE nodes must include containerField='joints' for proper validation and operation

The first warning is the relevant one.

I am not sure about the standard.

Perhaps we’re talking best practices.

John

On Thu, May 30, 2024 at 8:17 PM Joe D Williams @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. ...

Seriously, this has to be discussed.

There is nothing in the spec that says how the joints, segments, sites fields are to be used, especially to ignore animations or skin if the Joint is not included in the joints field.

The user code is there to define the skeleton and all joint, segment site nodes must be treated the same, that is rendered if in the user code. Whatever those other fields do I don't now from the spec so sure, platform dependent, but not free to ignore, I hope.

Thanks,

Joe

-----Original Message----- From: Extensible 3D (X3D) Graphics public discussion @.***

Sent: May 29, 2024 12:08 PM To: John Carlson @.>, create3000/sunrize < @.>, < @.> Cc: Joe D Williams @.> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. Same for both joint animations and joint-to-skin point bindings?What is the connection? For skin, you can't ignore skinCoordIndex and skinCoordWeight fields just because the Joint is not found in joints. John, maybe try for what happens when just a few joints are left out of the llist. Does this not recognize the humanoid if no segments or sites fields? Whatever, the rules for use of those three fields should be consistentThanks, Joe

-----Original Message----- From: John Carlson @.> Sent: May 29, 2024 7:22 AM To: Joe D Williams @.>, create3000/sunrize < @.> Cc: Author @.>, create3000/sunrize < @.***> Subject: Re: [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

Ah, thanks. That makes sense, Joe often leaves off the joints field. Sigh.

On Wed, May 29, 2024 at 9:19 AM Holger Seelig @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

— Reply to this email directly, view it on GitHub https://github.com/create3000/sunrize/issues/6#issuecomment-2137534969, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFMJ54XCHA6LHSRPCLBTP3ZEXPWRAVCNFSM6AAAAABIEQ2ITSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGUZTIOJWHE . You are receiving this because you authored the thread.Message ID: @.***>

coderextreme commented 3 months ago

Right, there is nothing in there that says to ignore the skeleton if joints field is not there. Also, there is no hint of how the joints, segments, and sites fields are applied. Whatever it is they should all be treated the same.

Next, there is no browser that actually needs the fields, except one that fails anim and skin if joints field not there.

Finally, the browser must actually ignore those fields because otherwise the thing would be drawn twice, once with DEFs and once with USEs. in those fields.

Again, those fields are broke because all that is necessary, due to the exact naming requirements, is the contents of the "name" field of each Joint, Segment, and Site.

Thanks, Joe

-----Original Message----- From: John Carlson @.> Sent: May 31, 2024 12:07 AM To: Joe D Williams @.> Cc: Extensible 3D (X3D) Graphics public discussion @.>, create3000/sunrize @.>, @.***> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

So, I did some research. Here’s what tooltips says:

[joints accessType inputOutput (https://www.web3d.org/x3d/content/X3dTooltips.html#accessType), type MFNode (https://www.web3d.org/x3d/content/X3dTooltips.html#MFNode) array, empty list] [HAnimJoint (https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimJoint)] The joints field contains a list of USE references for all HAnimJoint node instances found within the preceding skeleton hierarchy. Hint: order is irrelevant since names are contained in the original DEF objects. Hint: these USE nodes can be utilitized by inverse kinematics (IK) and animation engines. Warning: the number of contained nodes at top level of HAnimHumanoid needs to match the number of corresponding HAnimJoint node instances found within the preceding skeleton hierarchy. Warning: top-level HAnimJoint USE nodes must include containerField='joints' for proper validation and operation

The first warning is the relevant one.

I am not sure about the standard.

Perhaps we’re talking best practices.

John

On Thu, May 30, 2024 at 8:17 PM Joe D Williams @. @.)> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. ...

Seriously, this has to be discussed.
There is nothing in the spec that says how the joints, segments, sites fields are to be used, especially to ignore animations or skin if the Joint is not included in the joints field.

The user code is there to define the skeleton and all joint, segment site nodes must be treated the same, that is rendered if in the user code. Whatever those other fields do I don't now from the spec so sure, platform dependent, but not free to ignore, I hope.

Thanks,

Joe

-----Original Message----- From: Extensible 3D (X3D) Graphics public discussion @. @.)> Sent: May 29, 2024 12:08 PM To: John Carlson @. @.)>, create3000/sunrize @. @.)>, @. @.)> Cc: Joe D Williams @. @.)> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. Same for both joint animations and joint-to-skin point bindings?What is the connection? For skin, you can't ignore skinCoordIndex and skinCoordWeight fields just because the Joint is not found in joints. John, maybe try for what happens when just a few joints are left out of the llist. Does this not recognize the humanoid if no segments or sites fields? Whatever, the rules for use of those three fields should be consistentThanks, Joe

-----Original Message----- From: John Carlson @. @.)> Sent: May 29, 2024 7:22 AM To: Joe D Williams @. @.)>, create3000/sunrize @. @.)> Cc: Author @. @.)>, create3000/sunrize @. @.)> Subject: Re: [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

Ah, thanks. That makes sense, Joe often leaves off the joints field. Sigh.

On Wed, May 29, 2024 at 9:19 AM Holger Seelig @. @.)> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work. — Reply to this email directly, view it on GitHub (https://github.com/create3000/sunrize/issues/6#issuecomment-2137534969), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AAFMJ54XCHA6LHSRPCLBTP3ZEXPWRAVCNFSM6AAAAABIEQ2ITSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGUZTIOJWHE). You are receiving this because you authored the thread.Message ID: @. @.)>

coderextreme commented 3 months ago

The specification of H-Anim does say to list all joints in humanoid "joints" field, https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/ObjectInterfaces.html#Humanoid .

"""The joints field contains a list of references, one for each Joint

object defined within the skeleton field hierarchy of the Humanoid object. The order in which the joints are listed is irrelevant since the names of the joints are stored in the Joint objects themselves."""

The tooltips shown in this thread confirm it.

Note: Listing the joints inside HAnimHumanoid.joints does not make them drawn. Nothing would be drawn twice. I'm saying this to address incorrect statement in this thread """Finally, the browser must actually ignore those fields because otherwise the thing would be drawn twice, once with DEFs and once with USEs. in those fields. """ . No, nothing would be drawn twice.

Castle Game Engine tools (view3dscene, castle-model-viewer) also recommend to list all joints there. If your joints list is empty, we will warn about it ("""HAnimHumanoid.joints list was empty, fixed to list all %d joints"""). We have special code to tolerate it, but strictly speaking the model is invalid. Fill the "HAnimHumanoid.joints".

This has been discussed already on this mailing list a few times. If the model has empty "HAnimHumanoid.joints", you have to fil them out. This isn't new.

Regards, Michalis

pt., 31 maj 2024 o 19:36 Joe D Williams via x3d-public @.***> napisał(a):

Right, there is nothing in there that says to ignore the skeleton if joints field is not there.

Also, there is no hint of how the joints, segments, and sites fields are applied. Whatever it is they should all be treated the same.

Next, there is no browser that actually needs the fields, except one that fails anim and skin if joints field not there.

Finally, the browser must actually ignore those fields because otherwise the thing would be drawn twice, once with DEFs and once with USEs. in those fields.

Again, those fields are broke because all that is necessary, due to the exact naming requirements, is the contents of the "name" field of each Joint, Segment, and Site.

Thanks,

Joe

-----Original Message----- From: John Carlson @.> Sent: May 31, 2024 12:07 AM To: Joe D Williams @.> Cc: Extensible 3D (X3D) Graphics public discussion @.>, create3000/sunrize < @.>, < @.***> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

So, I did some research. Here’s what tooltips says:

[joints accessType inputOutput https://www.web3d.org/x3d/content/X3dTooltips.html#accessType, type MFNode https://www.web3d.org/x3d/content/X3dTooltips.html#MFNode array, empty list] [HAnimJoint https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimJoint] The joints field contains a list of USE references for all HAnimJoint node instances found within the preceding skeleton hierarchy. Hint: order is irrelevant since names are contained in the original DEF objects. Hint: these USE nodes can be utilitized by inverse kinematics (IK) and animation engines. Warning: the number of contained <HAnimJoint USE='' containerField='joints'/> nodes at top level of HAnimHumanoid needs to match the number of corresponding HAnimJoint node instances found within the preceding skeleton hierarchy. Warning:* top-level HAnimJoint USE nodes must include containerField='joints' for proper validation and operation

The first warning is the relevant one.

I am not sure about the standard.

Perhaps we’re talking best practices.

John

On Thu, May 30, 2024 at 8:17 PM Joe D Williams @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. ...

Seriously, this has to be discussed.

There is nothing in the spec that says how the joints, segments, sites fields are to be used, especially to ignore animations or skin if the Joint is not included in the joints field.

The user code is there to define the skeleton and all joint, segment site nodes must be treated the same, that is rendered if in the user code. Whatever those other fields do I don't now from the spec so sure, platform dependent, but not free to ignore, I hope.

Thanks,

Joe

-----Original Message----- From: Extensible 3D (X3D) Graphics public discussion < @.> Sent: May 29, 2024 12:08 PM To: John Carlson @.>, create3000/sunrize < @.>, < @.> Cc: Joe D Williams @.***> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. Same for both joint animations and joint-to-skin point bindings?What is the connection? For skin, you can't ignore skinCoordIndex and skinCoordWeight fields just because the Joint is not found in joints. John, maybe try for what happens when just a few joints are left out of the llist. Does this not recognize the humanoid if no segments or sites fields? Whatever, the rules for use of those three fields should be consistentThanks, Joe

-----Original Message----- From: John Carlson @.> Sent: May 29, 2024 7:22 AM To: Joe D Williams @.>, create3000/sunrize < @.> Cc: Author @.>, create3000/sunrize < @.***> Subject: Re: [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

Ah, thanks. That makes sense, Joe often leaves off the joints field. Sigh.

On Wed, May 29, 2024 at 9:19 AM Holger Seelig @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

— Reply to this email directly, view it on GitHub https://github.com/create3000/sunrize/issues/6#issuecomment-2137534969, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFMJ54XCHA6LHSRPCLBTP3ZEXPWRAVCNFSM6AAAAABIEQ2ITSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGUZTIOJWHE . You are receiving this because you authored the thread.Message ID: @.***>


x3d-public mailing list @.*** http://web3d.org/mailman/listinfo/x3d-public_web3d.org

coderextreme commented 3 months ago

Doing the hard work in the standard much appreciated, Michalis!

John

On Mon, Jun 3, 2024 at 4:39 AM Michalis Kamburelis @.***> wrote:

The specification of H-Anim does say to list all joints in humanoid "joints" field, https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/ObjectInterfaces.html#Humanoid .

"""The joints field contains a list of references, one for each Joint

object defined within the skeleton field hierarchy of the Humanoid object. The order in which the joints are listed is irrelevant since the names of the joints are stored in the Joint objects themselves."""

The tooltips shown in this thread confirm it.

Note: Listing the joints inside HAnimHumanoid.joints does not make them drawn. Nothing would be drawn twice. I'm saying this to address incorrect statement in this thread """Finally, the browser must actually ignore those fields because otherwise the thing would be drawn twice, once with DEFs and once with USEs. in those fields. """ . No, nothing would be drawn twice.

Castle Game Engine tools (view3dscene, castle-model-viewer) also recommend to list all joints there. If your joints list is empty, we will warn about it ("""HAnimHumanoid.joints list was empty, fixed to list all %d joints"""). We have special code to tolerate it, but strictly speaking the model is invalid. Fill the "HAnimHumanoid.joints".

This has been discussed already on this mailing list a few times. If the model has empty "HAnimHumanoid.joints", you have to fil them out. This isn't new.

Regards, Michalis

pt., 31 maj 2024 o 19:36 Joe D Williams via x3d-public < @.***> napisał(a):

Right, there is nothing in there that says to ignore the skeleton if joints field is not there.

Also, there is no hint of how the joints, segments, and sites fields are applied. Whatever it is they should all be treated the same.

Next, there is no browser that actually needs the fields, except one that fails anim and skin if joints field not there.

Finally, the browser must actually ignore those fields because otherwise the thing would be drawn twice, once with DEFs and once with USEs. in those fields.

Again, those fields are broke because all that is necessary, due to the exact naming requirements, is the contents of the "name" field of each Joint, Segment, and Site.

Thanks,

Joe

-----Original Message----- From: John Carlson @.> Sent: May 31, 2024 12:07 AM To: Joe D Williams @.> Cc: Extensible 3D (X3D) Graphics public discussion @.>, create3000/sunrize < @.>, < @.***> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

So, I did some research. Here’s what tooltips says:

[joints accessType inputOutput https://www.web3d.org/x3d/content/X3dTooltips.html#accessType, type MFNode https://www.web3d.org/x3d/content/X3dTooltips.html#MFNode array, empty list] [HAnimJoint https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimJoint] The joints field contains a list of USE references for all HAnimJoint node instances found within the preceding skeleton hierarchy. Hint: order is irrelevant since names are contained in the original DEF objects. Hint: these USE nodes can be utilitized by inverse kinematics (IK) and animation engines. Warning: the number of contained <HAnimJoint USE='' containerField='joints'/> nodes at top level of HAnimHumanoid needs to match the number of corresponding HAnimJoint node instances found within the preceding skeleton hierarchy. Warning:* top-level HAnimJoint USE nodes must include containerField='joints' for proper validation and operation

The first warning is the relevant one.

I am not sure about the standard.

Perhaps we’re talking best practices.

John

On Thu, May 30, 2024 at 8:17 PM Joe D Williams @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. ...

Seriously, this has to be discussed.

There is nothing in the spec that says how the joints, segments, sites fields are to be used, especially to ignore animations or skin if the Joint is not included in the joints field.

The user code is there to define the skeleton and all joint, segment site nodes must be treated the same, that is rendered if in the user code. Whatever those other fields do I don't now from the spec so sure, platform dependent, but not free to ignore, I hope.

Thanks,

Joe

-----Original Message----- From: Extensible 3D (X3D) Graphics public discussion < @.> Sent: May 29, 2024 12:08 PM To: John Carlson @.>, create3000/sunrize < @.>, < @.> Cc: Joe D Williams @.***> Subject: Re: [x3d-public] [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

This is the only player or browser or any tool I have encountered using that rule. Same for both joint animations and joint-to-skin point bindings?What is the connection? For skin, you can't ignore skinCoordIndex and skinCoordWeight fields just because the Joint is not found in joints. John, maybe try for what happens when just a few joints are left out of the llist. Does this not recognize the humanoid if no segments or sites fields? Whatever, the rules for use of those three fields should be consistentThanks, Joe

-----Original Message----- From: John Carlson @.> Sent: May 29, 2024 7:22 AM To: Joe D Williams @.>, create3000/sunrize < @.> Cc: Author @.>, create3000/sunrize < @.***> Subject: Re: [create3000/sunrize] Joe doesn't kick or move in sunrize. (Issue #6)

Ah, thanks. That makes sense, Joe often leaves off the joints field. Sigh.

On Wed, May 29, 2024 at 9:19 AM Holger Seelig @.***> wrote:

The HAnimHumanoid node has a MFNode field joints which must contain all joint nodes, then skinning will work.

— Reply to this email directly, view it on GitHub https://github.com/create3000/sunrize/issues/6#issuecomment-2137534969, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFMJ54XCHA6LHSRPCLBTP3ZEXPWRAVCNFSM6AAAAABIEQ2ITSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGUZTIOJWHE . You are receiving this because you authored the thread.Message ID: @.***>


x3d-public mailing list @.*** http://web3d.org/mailman/listinfo/x3d-public_web3d.org

coderextreme commented 3 months ago

More likely, using geometry outside and inside the Humanoid causes it to be drawn twice. There’s no shape field in HAnimJoint that I know of. Subnodes, yes, obviously. Perhaps Displacers are a form of geometry, IDK.

Can anyone tell that I’m burned out with programming Blender Python?

John

On Mon, Jun 3, 2024 at 4:39 AM Michalis Kamburelis @.***> wrote:

Note: Listing the joints inside HAnimHumanoid.joints does not make them drawn. Nothing would be drawn twice. I'm saying this to address incorrect statement in this thread """Finally, the browser must actually ignore those fields because otherwise the thing would be drawn twice, once with DEFs and once with USEs. in those fields. """ . No, nothing would be drawn twice.