[x3d-public] x3d.py roundtrip for Metadata nodes in v.3.3 and v.4.0
GPU Group
gpugroup at gmail.com
Thu Nov 2 06:42:57 PDT 2023
What about on Scene/Proto/Inline executionContext - is there an array
holder / property / sub-element for ProtoDeclares and one for Routes in
those x3d.py elements? If so, then they (ProtoDeclares, Routes) could go
there.
-Doug
On Wed, Nov 1, 2023 at 8:54 PM Andreas Plesch <andreasplesch at gmail.com>
wrote:
> Hi Don,
>
> All true and relevant, of course. I think the important phrase is
> "inside a node wherever fields may appear". The question becomes what
> does that phrase mean for the python encoding ? It is unclear that it
> means ROUTE statements should appear as members of the array which is
> assigned to the children field of a node, or any other MFNode field of
> a node. The python encoding does not currently allow for non-field
> parameters to appear inside a X3D node, eg. inside the parameters
> given to the node returning function call. So, as a consequence, the
> only option currently is to add ROUTE statements to MFNode field
> values in the python encoding which to me seems more like a band aid.
> For example, it seems to make it impossible to represent a ROUTE
> inside a node which only has SFNode fields like:
>
> XML:
> <Shape>
> <Appearance>
> <Material DEF='boxColor' diffuseColor='1 0 0' />
> </Appearance>
> <ROUTE fromNode='cIntrpltr' fromField='value_changed'
> toNode='boxColor' toField='diffuseColor' />
> <Box/>
> </Shape>
>
> Python:
> Shape(
> appearance=Appearance(
> material=Material(DEF='boxColor', diffuseColor=SFColor(1,0,0))),
> # How to add a ROUTE here ?
> # children=[ ROUTE(..) ] ?
> geometry=Box()
> )
>
> Perhaps the children parameter is allowed for any node in the Python
> encoding ?
>
> Would it make sense to add a 'statements' parameter or an 'inside'
> parameter to node generating functions in python ? Possibly too late
> for that.
>
> In any case, for containerField support it is possible to just have
> Route.XML() (and Comment.XML()) accept an optional field parameter
> which is ignored.
>
> -Andreas
>
> On Wed, Nov 1, 2023 at 8:03 PM Brutzman, Donald (Don) (CIV)
> <brutzman at nps.edu> wrote:
> >
> > Checking details: placement of ROUTE (and several other X3D statements)
> is allowed as a child of X3DGroupingNode and is permitted by XML validation.
> >
> >
> >
> > As noted already, we will be similarly working to make each of the file
> encodings and programming language bindings as symmetric as possible to
> maximize X3D 4.0 portability and clarity.
> >
> >
> >
> > Of course it is a well-known error pattern to have missing or unclear
> ROUTE definitions. The ability to keep ROUTEs together with (i.e. promptly
> following) related nodes is an excellent pattern for author understanding
> and animation completeness. There are almost-countless instances of this
> pattern in the X3D Example Archives.
> >
> >
> >
> > Finally, this was a deliberately considered topic during working group
> meetings and X3D 4.0 development. Note that the following example in X3D
> 4.0 does not state it must be at root of the scene.
> >
> >
> >
> >
> >
> > X3D 4.0 Architecture, clause 4 Concepts, 4.4.2.4.1 Routes
> >
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/concepts.html#ModifyingObjectsRoutes
> >
> >
> >
> > EXAMPLE It is possible to create a scene with run-time behavior using
> only this event propagation model:
> >
> >
> >
> > DEF TS TimeSensor {
> >
> > loop TRUE
> >
> > cycleInterval 5
> >
> > }
> >
> > DEF I PositionInterpolator {
> >
> > key [ 0 0.5 1 ]
> >
> > keyValue [ 0 -1 0, 0 1 0, 0 -1 0 ]
> >
> > }
> >
> > DEF T Transform {
> >
> > children [
> >
> > Shape {
> >
> > geometry Box { }
> >
> > }
> >
> > ]
> >
> > }
> >
> > ROUTE ts.fraction_changed TO I.set_fraction
> >
> > ROUTE I.value_changed TO T.set_translation
> >
> >
> >
> >
> >
> > Also relevant:
> >
> >
> >
> > X3D 4.0 Architecture, clause 4 Concepts, 4.4.8.2 Routes
> >
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/concepts.html#Routes
> > Excerpt: “ROUTE statements may either appear at the top level of an X3D
> file or inside a node wherever fields may appear. A ROUTE statement shall
> only appear after the definition of the source and destination nodes.
> Placing a ROUTE statement within a node does not associate it with that
> node in any way.”
> >
> >
> >
> > Hope this makes sense. Thanks everyone for paying close attention…
> validatable correctness is essential.
> >
> >
> >
> > Have fun with X3D! 8)
> >
> >
> >
> > all the best, Don
> >
> > --
> >
> > Don Brutzman Naval Postgraduate School, Code USW/Br
> brutzman at nps.edu
> >
> > Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA
> +1.831.656.2149
> >
> > X3D graphics, virtual worlds, navy robotics
> https://faculty.nps.edu/brutzman
> >
> >
> >
> > -----Original Message-----
> > From: x3d-public <x3d-public-bounces at web3d.org> On Behalf Of Andreas
> Plesch
> > Sent: Wednesday, November 1, 2023 12:36 PM
> > To: John Carlson <yottzumm at gmail.com>
> > Cc: X3D Graphics public mailing list <x3d-public at web3d.org>
> > Subject: Re: [x3d-public] x3d.py roundtrip for Metadata nodes in v.3.3
> and v.4.0
> >
> >
> >
> > I think that is because JoeKick.py puts ROUTE in the children field of a
> Group node which is not quite correct. ROUTEs can be children elements in
> the XML encoding but are not valid values for the children field. I think
> in the python encoding ROUTEs can probably exist only at the Scene level to
> avoid conflating x3d children with xml children.
> >
> >
> >
> > x3dcf2.py may work more robustly since the stylesheet does not really
> distinguish between x3d nodes and x3d statements and it did add the field
> parameter also to ROUTE.XML(). Perhaps give it a try.
> >
> >
> >
> > -Andreas
> >
> >
> >
> > On Wed, Nov 1, 2023 at 1:35 PM John Carlson <yottzumm at gmail.com> wrote:
> >
> > >
> >
> > > First "bug" report:
> >
> > >
> >
> > > $ py JoeKick.py
> >
> > > x3d.py package 4.0.64.4 loaded, have fun with X3D Graphics!
> >
> > > Self-test diagnostics for JoeKick.py:
> >
> > > meta information, TODO: Record information about skin coordinates
> >
> > > (found in comment at end of scene) as a structured MetadataSet
> containing MetadataString nodes Traceback (most recent call last):
> >
> > > File "C:\Users\john\X3DJSONLD\blend\JoeKick.py", line 715, in
> <module>
> >
> > > newModelXML= newModel.XML() # test export method XML() for
> exceptions during export
> >
> > > ^^^^^^^^^^^^^^
> >
> > > File "C:\Users\john\x3d-python-mod\x3dcf.py", line 14985, in XML
> >
> > > result += str(self.Scene.XML(indentLevel=indentLevel+1,
> syntax=syntax))
> >
> > >
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> > > File "C:\Users\john\x3d-python-mod\x3dcf.py", line 14494, in XML
> >
> > > result += each.XML(indentLevel=indentLevel+1, syntax=syntax)
> >
> > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> > > File "C:\Users\john\x3d-python-mod\x3dcf.py", line 45024, in XML
> >
> > > result += each.XML(indentLevel=indentLevel+1, syntax=syntax,
> field="children")
> >
> > >
> >
> > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> > > TypeError: ROUTE.XML() got an unexpected keyword argument 'field'
> >
> > >
> >
> > > I have to take a half hour off volunteering, I hope to be back soon.
> >
> > >
> >
> > > John
> >
> > >
> >
> > > On Wed, Nov 1, 2023 at 12:22 PM Andreas Plesch <
> andreasplesch at gmail.com> wrote:
> >
> > >>
> >
> > >> Thanks for giving this a try ! Glad to hear it could be useful,
> >
> > >>
> >
> > >> Andreas
> >
> > >>
> >
> > >> > Message: 2
> >
> > >> > Date: Wed, 1 Nov 2023 11:16:24 -0400
> >
> > >> > From: Vincent Marchetti <vmarchetti at kshell.com>
> >
> > >> > To: X3D-Public <x3d-public at web3d.org>
> >
> > >> > Subject: Re: [x3d-public] x3d.py roundtrip for Metadata nodes in
> v.3.3
> >
> > >> > and v.4.0
> >
> > >> > Message-ID: <38B8549E-944D-460F-B5D7-31BC73721015 at kshell.com>
> >
> > >> > Content-Type: text/plain; charset="us-ascii"
> >
> > >> >
> >
> > >> > Thank you Andreas, The x3dcf.py module is a useful tool for
> generating X3D XML encoding for those scenes which require the
> containerField xml attribute to unambiguously assign XML elements to the
> different X3D fields of the parent XML element.
> >
> > >> >
> >
> > >> > I ran an example Python script for generating a MetadataSet node
> that required containerField for accurat XML encoding and the correct
> result is in the GeneratedCalendarMetadataWithCF.x3d file attached.
> >
> > >> >
> >
> > >> > The pertinent accurate encoding is:
> >
> > >> > ------
> >
> > >> > <WorldInfo>
> >
> > >> > <MetadataSet containerField='metadata' name='birthday'
> reference='https://www.archives.gov/legislative/features/washington'>
> >
> > >> > <MetadataString containerField='metadata' name='calendar'
> value='"Julian"'/>
> >
> > >> > <MetadataInteger containerField='value' name='day'
> value='11'/>
> >
> > >> > <MetadataInteger containerField='value' name='month'
> value='2'/>
> >
> > >> > <MetadataInteger containerField='value' name='year'
> value='1731'/>
> >
> > >> > </MetadataSet>
> >
> > >> > </WorldInfo>
> >
> > >> >
> >
> > >> > -----
> >
> > >> >
> >
> > >> > Vince Marchetti
> >
> > >> >
> >
> > >> > -------------- next part -------------- A non-text attachment was
> >
> > >> > scrubbed...
> >
> > >> > Name: GenerateCalendarMetadataWithCF.py
> >
> > >> > Type: text/x-python-script
> >
> > >> > Size: 791 bytes
> >
> > >> > Desc: not available
> >
> > >> > URL:
> >
> > >> > <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/202311
> >
> > >> > 01/1383c745/attachment-0001.bin>
> >
> > >> > -------------- next part -------------- A non-text attachment was
> >
> > >> > scrubbed...
> >
> > >> > Name: GeneratedCalendarMetadataWithCF.x3d
> >
> > >> > Type: model/x3d+xml
> >
> > >> > Size: 920 bytes
> >
> > >> > Desc: not available
> >
> > >> > URL:
> >
> > >> > <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/202311
> >
> > >> > 01/1383c745/attachment-0001.x3d>
> >
> > >> > -------------- next part --------------
> >
> > >> >
> >
> > >> >
> >
> > >> > > On Nov 1, 2023, at 10:23 AM, Andreas Plesch <
> andreasplesch at gmail.com> wrote:
> >
> > >> > >
> >
> > >> > > A quick update:
> >
> > >> > >
> >
> > >> > > On Tue, Oct 31, 2023 at 3:49?PM Andreas Plesch <
> andreasplesch at gmail.com> wrote:
> >
> > >> > >>
> >
> > >> > >> Notes:
> >
> > >> > >>
> >
> > >> > >> x3d.py is autogenerated from X3DUOM:
> >
> > >> > >>
> >
> > >> > >> https://www.web3d.org/x3d/stylesheets/python/python.html#autogen
> >
> > >> > >> eration
> >
> > >> > >> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%
> >
> > >> > >> 2Fsourceforge.net%2Fp%2Fx3d%2Fcode%2FHEAD%2Ftree%2Fwww.web3d.org
> >
> > >> > >> %2Fx3d%2Fstylesheets%2FX3duomToX3dPythonPackage.xslt&data=05%7C0
> >
> > >> > >> 1%7Cbrutzman%40nps.edu%7Ccd2d5f56ffc7496e3e5b08dbdb11f7fb%7C6d93
> >
> > >> > >> 6231a51740ea9199f7578963378e%7C0%7C0%7C638344642474548323%7CUnkn
> >
> > >> > >> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
> >
> > >> > >> 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vUoJQilvuatDOWApbTvcw
> >
> > >> > >> vEprn8iyCs%2B%2F%2F7xTlQxpYE%3D&reserved=0
> >
> > >> > >>
> >
> > >> > >> X3DUOM has all necessary containerField default value
> information.
> >
> > >> > >>
> >
> > >> > >> But the first step may be to modify the stylesheet to generate
> >
> > >> > >> containerField attributes for all nodes, for simplicity. It
> >
> > >> > >> looks like the .XML() function would have to have an additional
> parameter 'field'
> >
> > >> > >> X3D(indentLevel, syntax, field) for each node.
> >
> > >> > >>
> >
> > >> > >> Postprocessing the generated XML is not possible since
> >
> > >> > >> information was irretrievably lost. But postprocessing the
> >
> > >> > >> autogenerated x3d.py python code may be possible since xslt is
> not for everyone.
> >
> > >> > >
> >
> > >> > > As a proof of concept I hacked a short awk (since I know it)
> >
> > >> > > script to process the latest x3d.py to include containerField
> support:
> >
> > >> > >
> >
> > >> > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2
> >
> > >> > > Fgithub.com%2Fandreasplesch%2Fx3d-python-mod%2Fblob%2Fmain%2Fsrc%
> >
> > >> > > 2FcfXML.awk&data=05%7C01%7Cbrutzman%40nps.edu%7Ccd2d5f56ffc7496e3
> >
> > >> > > e5b08dbdb11f7fb%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C6383
> >
> > >> > > 44642474548323%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIj
> >
> > >> > > oiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=6X
> >
> > >> > > xOQrg8Id5BdOwqnW52BBFwDkmMPwhgKsa2BLle6ms%3D&reserved=0
> >
> > >> > >
> >
> > >> > > It looks for the Concrete Nodes section, adds a field parameter
> >
> > >> > > to the
> >
> > >> > > .XML() output function, adds the containerField attribute to the
> >
> > >> > > output, and adds the field parameter to the .XML() calls for
> >
> > >> > > metadata, SFNode and MFNode field processing.
> >
> > >> > > The awk script is very brittle since it relies on comments in
> >
> > >> > > x3d.py to find the appropriate lines to modify. The hardest part
> >
> > >> > > was to get the quoting and escaping correct.
> >
> > >> > > It generates containerField attributes for all SF/MFNode fields
> >
> > >> > > except 'children'. Of course, most are unnecessary but filtering
> >
> > >> > > systematically for defaults would probably require involving
> >
> > >> > > X3DUOM and the generation stylesheet, similar to other XML
> related 'fields'
> >
> > >> > > such as style or class.
> >
> > >> > >
> >
> > >> > > The result is
> >
> > >> > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2
> >
> > >> > > Fraw.githubusercontent.com%2Fandreasplesch%2Fx3d-python-mod%2Fmai
> >
> > >> > > n%2Fx3dcf.py&data=05%7C01%7Cbrutzman%40nps.edu%7Ccd2d5f56ffc7496e
> >
> > >> > > 3e5b08dbdb11f7fb%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638
> >
> > >> > > 344642474548323%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQI
> >
> > >> > > joiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=p
> >
> > >> > > Lm5kiuYmgbb5jcjp09KTCrIzUt2p%2BkdYlrjyYpkhac%3D&reserved=0
> >
> > >> > >
> >
> > >> > > The modified python script appears to work as expected by adding
> >
> > >> > > the appropriate containerField attributes in XML output for all
> >
> > >> > > the examples I tried.
> >
> > >> > > Realistically, this is as far as I can go with this but I think
> >
> > >> > > it may show how containerField support in XML output could be
> >
> > >> > > provided with x3d.py.
> >
> > >> > >
> >
> > >> > > -Andreas
> >
> > >> > >
> >
> > >> > > _______________________________________________
> >
> > >> > > x3d-public mailing list
> >
> > >> > > x3d-public at web3d.org
> >
> > >> > > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> >
> > >> >
> >
> > >> >
> >
> > >> > ------------------------------
> >
> > >> >
> >
> > >> > Message: 3
> >
> > >> > Date: Wed, 1 Nov 2023 11:05:29 -0500
> >
> > >> > From: John Carlson <yottzumm at gmail.com>
> >
> > >> > To: Andreas Plesch <andreasplesch at gmail.com>
> >
> > >> > Cc: X3D Graphics public mailing list <x3d-public at web3d.org>
> >
> > >> > Subject: Re: [x3d-public] x3d.py roundtrip for Metadata nodes in
> v.3.3
> >
> > >> > and v.4.0
> >
> > >> > Message-ID:
> >
> > >> >
> >
> > >> > <CAGC3UEkYxP0tk5rQ23VVhsd0gXW7W+AH5QaS=AWxkv0f8kgo1Q at mail.gmail.com
> >
> > >> > >
> >
> > >> > Content-Type: text/plain; charset="utf-8"
> >
> > >> >
> >
> > >> > You are awesome, Andreas! Awk would not have been my choice, but
> >
> > >> > apparently, you made it work! Perhaps I will make a Perl script
> based on
> >
> > >> > your awk. A python script could be written to process X3DUOM and
> probably
> >
> > >> > do the matching as well.
> >
> > >> >
> >
> > >> > Dang cool!
> >
> > >> >
> >
> > >> > On Wed, Nov 1, 2023 at 9:24 AM Andreas Plesch
> >
> > >> > <andreasplesch at gmail.com>
> >
> > >> > wrote:
> >
> > >> >
> >
> > >> > > A quick update:
> >
> > >> > >
> >
> > >> > > On Tue, Oct 31, 2023 at 3:49?PM Andreas Plesch
> >
> > >> > > <andreasplesch at gmail.com>
> >
> > >> > > wrote:
> >
> > >> > > >
> >
> > >> > > > Notes:
> >
> > >> > > >
> >
> > >> > > > x3d.py is autogenerated from X3DUOM:
> >
> > >> > > >
> >
> > >> > > > https://www.web3d.org/x3d/stylesheets/python/python.html#autoge
> >
> > >> > > > neration
> >
> > >> > > >
> >
> > >> > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2
> >
> > >> > > Fsourceforge.net%2Fp%2Fx3d%2Fcode%2FHEAD%2Ftree%2Fwww.web3d.org%2
> >
> > >> > > Fx3d%2Fstylesheets%2FX3duomToX3dPythonPackage.xslt&data=05%7C01%7
> >
> > >> > > Cbrutzman%40nps.edu%7Ccd2d5f56ffc7496e3e5b08dbdb11f7fb%7C6d936231
> >
> > >> > > a51740ea9199f7578963378e%7C0%7C0%7C638344642474548323%7CUnknown%7
> >
> > >> > > CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwi
> >
> > >> > > LCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vUoJQilvuatDOWApbTvcwvEprn8i
> >
> > >> > > yCs%2B%2F%2F7xTlQxpYE%3D&reserved=0
> >
> > >> > > >
> >
> > >> > > > X3DUOM has all necessary containerField default value
> information.
> >
> > >> > > >
> >
> > >> > > > But the first step may be to modify the stylesheet to generate
> >
> > >> > > > containerField attributes for all nodes, for simplicity. It
> >
> > >> > > > looks like the .XML() function would have to have an additional
> parameter 'field'
> >
> > >> > > > X3D(indentLevel, syntax, field) for each node.
> >
> > >> > > >
> >
> > >> > > > Postprocessing the generated XML is not possible since
> >
> > >> > > > information was irretrievably lost. But postprocessing the
> >
> > >> > > > autogenerated x3d.py python code may be possible since xslt is
> not for everyone.
> >
> > >> > >
> >
> > >> > > As a proof of concept I hacked a short awk (since I know it)
> >
> > >> > > script to process the latest x3d.py to include containerField
> support:
> >
> > >> > >
> >
> > >> > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2
> >
> > >> > > Fgithub.com%2Fandreasplesch%2Fx3d-python-mod%2Fblob%2Fmain%2Fsrc%
> >
> > >> > > 2FcfXML.awk&data=05%7C01%7Cbrutzman%40nps.edu%7Ccd2d5f56ffc7496e3
> >
> > >> > > e5b08dbdb11f7fb%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C6383
> >
> > >> > > 44642474548323%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIj
> >
> > >> > > oiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=6X
> >
> > >> > > xOQrg8Id5BdOwqnW52BBFwDkmMPwhgKsa2BLle6ms%3D&reserved=0
> >
> > >> > >
> >
> > >> > > It looks for the Concrete Nodes section, adds a field parameter
> >
> > >> > > to the
> >
> > >> > > .XML() output function, adds the containerField attribute to the
> >
> > >> > > output, and adds the field parameter to the .XML() calls for
> >
> > >> > > metadata, SFNode and MFNode field processing.
> >
> > >> > > The awk script is very brittle since it relies on comments in
> >
> > >> > > x3d.py to find the appropriate lines to modify. The hardest part
> >
> > >> > > was to get the quoting and escaping correct.
> >
> > >> > > It generates containerField attributes for all SF/MFNode fields
> >
> > >> > > except 'children'. Of course, most are unnecessary but filtering
> >
> > >> > > systematically for defaults would probably require involving
> >
> > >> > > X3DUOM and the generation stylesheet, similar to other XML
> related 'fields'
> >
> > >> > > such as style or class.
> >
> > >> > >
> >
> > >> > > The result is
> >
> > >> > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2
> >
> > >> > > Fraw.githubusercontent.com%2Fandreasplesch%2Fx3d-python-mod%2Fmai
> >
> > >> > > n%2Fx3dcf.py&data=05%7C01%7Cbrutzman%40nps.edu%7Ccd2d5f56ffc7496e
> >
> > >> > > 3e5b08dbdb11f7fb%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638
> >
> > >> > > 344642474704621%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQI
> >
> > >> > > joiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=7
> >
> > >> > > 4nwRmIni6cSY%2FMdNtOH5VNh9l6%2FScsR4te6XOlwKug%3D&reserved=0
> >
> > >> > >
> >
> > >> > > The modified python script appears to work as expected by adding
> >
> > >> > > the appropriate containerField attributes in XML output for all
> >
> > >> > > the examples I tried.
> >
> > >> > > Realistically, this is as far as I can go with this but I think
> >
> > >> > > it may show how containerField support in XML output could be
> >
> > >> > > provided with x3d.py.
> >
> > >> > >
> >
> > >> > > -Andreas
> >
> > >> > >
> >
> > >> > -------------- next part -------------- An HTML attachment was
> >
> > >> > scrubbed...
> >
> > >> > URL:
> >
> > >> > <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/202311
> >
> > >> > 01/59b1f34d/attachment.html>
> >
> > >> >
> >
> > >> > ------------------------------
> >
> > >> >
> >
> > >> > Subject: Digest Footer
> >
> > >> >
> >
> > >> > _______________________________________________
> >
> > >> > x3d-public mailing list
> >
> > >> > x3d-public at web3d.org
> >
> > >> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> >
> > >> >
> >
> > >> >
> >
> > >> > ------------------------------
> >
> > >> >
> >
> > >> > End of x3d-public Digest, Vol 176, Issue 4
> >
> > >> > ******************************************
> >
> > >>
> >
> > >>
> >
> > >>
> >
> > >> --
> >
> > >> Andreas Plesch
> >
> > >> Waltham, MA 02453
> >
> >
> >
> >
> >
> >
> >
> > --
> >
> > Andreas Plesch
> >
> > Waltham, MA 02453
> >
> >
> >
> > _______________________________________________
> >
> > x3d-public mailing list
> >
> > x3d-public at web3d.org
> >
> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
>
> --
> Andreas Plesch
> Waltham, MA 02453
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20231102/b35b1561/attachment-0001.html>
More information about the x3d-public
mailing list