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

John Carlson yottzumm at gmail.com
Sun Nov 22 19:08:38 PST 2020


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/80e736f4/attachment.html>


More information about the x3d-public mailing list