[x3d-public] x3dom bug related to IS/children PROTOs?

John Carlson yottzumm at gmail.com
Sun Nov 22 19:18:51 PST 2020


Looks like class is added via X3DUOM, so that's handled somewhat.  I need
to add @class to the @USE part of the sub-schemas, it looks like.

Any other work needed on JSON schema?  Do I need to allow *any* property on
nodes?

John

On Sun, Nov 22, 2020 at 9:08 PM John Carlson <yottzumm at gmail.com> wrote:

> I take that back. containerField is not allowed in JSON, for the most
> part.  So that means just class should be added to JSON schema for v4.0.
>  Does X3DOM or X_ITE effectively use class attributes, so if I translate
> JSON to XML/DOM it can handle the class attribute?  Does v4 also include
> on..="..." event so these need to be added to the JSON schema?
>
> Thanks,
>
> John
>
> On Sun, Nov 22, 2020 at 9:02 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> " Nodes containing a USE="someName" attribute can include no other
>> attributes except containerField and class. Default values for other
>> fields shall be ignored since field definitions in the original DEF node
>> declaration have precedence."
>>
>>
>> So now what's the interpretation of "can"?  Can I pull all this "oneOf"
>> stuff out of the JSON schema, or do we want to reject other properties?
>>
>> It would seem like HTML would allow us to add more attributes, out of the
>> box.  But this is JSON!  I guess we actually need to look at the Working
>> Draft of  the JSON encoding!
>>
>>
>> X3DOM and X_ITE do not contain JSON schema code, so they can do what they
>> want.   What should X3DJSONLD and the JSON validator do? At a minimum, I
>> suggest adding containerField and class to allowed properties along with
>> required USE property in subschema. Should I also include USE in the other
>> subschema for each node?
>>
>> Thanks for the reference!
>>
>> John
>>
>> On Sun, Nov 22, 2020 at 8:48 PM Andreas Plesch <andreasplesch at gmail.com>
>> wrote:
>>
>>>
>>> https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#DEFAndUSEAttributeSyntax
>>>
>>> does state that nodes cannot have other attributes next to USE except
>>> for class and containerField. Perhaps there should be an extra sentence on
>>> ProtoInstance since it is not a node allowing but not requiring the name
>>> attribute.
>>>
>>>
>>>
>>>
>>>
>>> On Sun, Nov 22, 2020 at 9:38 PM Andreas Plesch <andreasplesch at gmail.com>
>>> wrote:
>>>
>>>> Yes, I agree, in most cases USE would be the only attribute. Note that
>>>> USE is not a field, it is an attribute in the XML encoding.
>>>>
>>>> I am not sure how strict the XML encoding is in requiring that there
>>>> are no other attributes next to USE. They may be allowed but without any
>>>> effect.
>>>>
>>>> I also agree that USE in ProtoInstance is slightly different from USE
>>>> in regular nodes since ProtoInstance is just a verbose XML construct to
>>>> instruct instancing of a declared node.
>>>>
>>>> But I am not sure if that distinction requires additional clarification
>>>> in the spec.
>>>>
>>>> Andreas
>>>>
>>>> On Sun, Nov 22, 2020 at 9:11 PM John Carlson <yottzumm at gmail.com>
>>>> wrote:
>>>>
>>>>> I'll just pretend we zoomed back from 2020->2015 virtually (in the
>>>>> mind).
>>>>>
>>>>> Can we agree, that in most cases (nodes), USE is the only field
>>>>> allowed when USE appears?
>>>>>
>>>>> If not, I've got to change all my JSON schema generating code.
>>>>>
>>>>> Maybe we'll decide on another JSON schema based on the XML schema,
>>>>> since XML Spy can now generate a JSON schema from an XML schema last I
>>>>> heard.
>>>>>
>>>>> Let's just break all my coding for the last 5 years!  Whee!
>>>>>
>>>>> I would need to know all the nodes/statements where additional fields
>>>>> are allowed when USE appears.  I think there's only two cases.
>>>>>
>>>>> Or is this a thing in X3D4?
>>>>>
>>>>> It seems like USE has two different semantics, whether you're using it
>>>>> on a node or not?
>>>>>
>>>>> John
>>>>>
>>>>> On Sun, Nov 22, 2020 at 7:51 PM Andreas Plesch <
>>>>> andreasplesch at gmail.com> wrote:
>>>>>
>>>>>> I think the spec. does not have an opinion on this, see x3d-public
>>>>>> and other players. Cheers, -Andreas
>>>>>>
>>>>>> On Sun, Nov 22, 2020 at 8:47 PM John Carlson <yottzumm at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Note that X3DOM should now probably flag ProtoInstances with both
>>>>>>> name and USE with a warning that the code is now non-compliant or
>>>>>>> deprecated. I believe the spec says that USE and name together are only
>>>>>>> allowed in certain nodes (I think Metadata and perhaps one other comes to
>>>>>>> mind).
>>>>>>>
>>>>>>> That's the best I have right now.  See previous discussion on
>>>>>>> mailing list regarding extra fields including name along with USE.
>>>>>>>
>>>>>>> Also, if you use JSON schema, it should catch JSON examples as
>>>>>>> non-compliant if they contain both name and USE.  This works in JSON,
>>>>>>> because containerFields are not used in JSON.
>>>>>>>
>>>>>>> And yes, this may have all changed under my nose!
>>>>>>>
>>>>>>> John
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Nov 22, 2020 at 7:19 PM Andreas Plesch <
>>>>>>> andreasplesch at gmail.com> wrote:
>>>>>>>
>>>>>>>> Yes, the Diamond files have the diamond shape in the
>>>>>>>> ProtoDeclaration.
>>>>>>>>
>>>>>>>> I added guards for nonimplemented but expected, standard fields
>>>>>>>> (such as addChildren) to ProtoDeclaration.js, and allowed USE
>>>>>>>> ProtoInstances by looking for DEFs in the dom (before parsing, at the
>>>>>>>> initial step of translation to the concise x3dom syntax).
>>>>>>>>
>>>>>>>> These changes should help with making these older HAnim protos work
>>>>>>>> better.
>>>>>>>>
>>>>>>>> -Andreas
>>>>>>>>
>>>>>>>> On Sun, Nov 22, 2020 at 4:43 PM John Carlson <yottzumm at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> I see one Shape (in a proto?), but I didn’t look for geometry.   I
>>>>>>>>> believe there is satisfactory appearance.   I believe I only checked one
>>>>>>>>> LOA4 file.   I am not sure about converted files.
>>>>>>>>>
>>>>>>>>> I will look into this in more detail later today.  I believe at
>>>>>>>>> least the Diamond files should have shapes.
>>>>>>>>>
>>>>>>>>> John
>>>>>>>>>
>>>>>>>>> On Sun, Nov 22, 2020 at 9:35 AM Andreas Plesch <
>>>>>>>>> andreasplesch at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Yes this is Proto related, due to the "addChildren" and
>>>>>>>>>> "removeChildren" fields not being available in x3dom for grouping nodes.
>>>>>>>>>> And those are not available because x3dom cannot route node type fields.
>>>>>>>>>>
>>>>>>>>>> Although the Protos define the addChildren field it is actually
>>>>>>>>>> never used in the examples, so they are not actually necessary. You could
>>>>>>>>>> just remove them.
>>>>>>>>>>
>>>>>>>>>> The examples use an old Proto implementation of HAnim. The native
>>>>>>>>>> implementation is also available, without Protos.
>>>>>>>>>>
>>>>>>>>>> Perhaps it would make sense to add noop stubs for
>>>>>>>>>> add/removeChildren fields in X3DGroupingNode.js, or add a guard for the
>>>>>>>>>> Proto field type.
>>>>>>>>>>
>>>>>>>>>> I notice that hanimloa4.html does not have any geometry to
>>>>>>>>>> render, only the joint structure.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Andreas Plesch
>>>>>>>> Waltham, MA 02453
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Andreas Plesch
>>>>>> Waltham, MA 02453
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Andreas Plesch
>>>> Waltham, MA 02453
>>>>
>>>
>>>
>>> --
>>> Andreas Plesch
>>> Waltham, MA 02453
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20201122/67a9fc84/attachment.html>


More information about the x3d-public mailing list