[x3d-public] [SOLUTION] X3dToJson.xslt, -colorRamp object/array Holger's VolumeEmitter.x3d

John Carlson yottzumm at gmail.com
Mon Jul 4 16:44:29 PDT 2022


Good news, leaving colorRamp out of X3dToJson.xslt seems to have fixed the
particle system issue in Holger's example, VolumeEmitter.x3d when
converting to JSON.

Patch below:

$ diff /c/x3d-code/www.web3d.org/x3d/stylesheets/X3dToJson.xslt
X3dToJson.xslt
600c600
<                             ($fieldName = 'color')              or
($fieldName = 'colorRamp')          or ($fieldName = 'coord')
 or
---
>                             ($fieldName = 'color')              or
($fieldName = 'coord')              or

Looks like a pretty clean fix.  I can check in as desired, or we can
hopefully leave the email as a key for later (no guarantees I will keep my
stylesheet around).

It looks like other color fields in other nodes may also have a type that
start with MF, but I'm not sure if they're containerFields.

On Mon, Jul 4, 2022 at 6:15 PM John Carlson <yottzumm at gmail.com> wrote:

> Re: colorRamp for color in X3dToJson.xslt:
>
> <xsl:variable name="SFNodeType" select="
> [snip]
>                             ($fieldName = 'color')              or
> ($fieldName = 'colorRamp')          or ($fieldName = 'coord')
>  or
> [snip]
>                             <xsl:if test="not($SFNodeType) or
> //AllX3dElementsAttributes">
>                                     <xsl:text>[</xsl:text>
>                             </xsl:if>
>
> Investigations into X3DUOM:
>
>
>             <field name="color"
>                     synonym="colorRamp"
>                     type="MFNode"
>                     accessType="initializeOnly"
>                     acceptableNodeTypes="X3DColorNode"
>                     description="The color field contains Color|ColorRGBA
> nodes as a series of color values to be used at the given colorKey points
> in time."/>
>
> Suggestion to leave colorRamp out of the boolean expression above (will
> test to see if it works).  Note that name="color" fields vary between many
> types, including MFNode, MFColor, MFColorRGBA ( I didn't do an exhaustive
> search).
>
> Note that the colorRamp is in a ParticleSystem, and other .xslt files seem
> to address it.
>
> I'm going to test the suggestion, and get back to you, to see if we can
> close this issue.
>
> John
>
> On Mon, Jul 4, 2022 at 5:45 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> Ajv JSON schema reports on VolumeEmitter.json (potential issue in
>> X3dToJson.xslt):
>>
>> Can only validate version 4.0 presently. Switching version to 4.0.
>> =================================================
>> File: VolumeEmitter.json
>> Error reading VolumeEmitter.json
>>  keyword: required
>>  instancePath: /X3D/Scene/-children/4/ParticleSystem
>>  message: must have required property @USE
>>  params: {"missingProperty":"@USE"}
>>  file: VolumeEmitter.json
>>  version: 3.3
>>
>>  keyword: type
>>  instancePath: /X3D/Scene/-children/4/ParticleSystem/-colorRamp
>>  message: must be array
>>  params: {"type":"array"}
>>  file: VolumeEmitter.json
>>  version: 3.3
>>
>>  keyword: oneOf
>>  instancePath: /X3D/Scene/-children/4/ParticleSystem
>>  message: must match exactly one schema in "oneOf"
>>  params: {"passingSchemas":null}
>>  file: VolumeEmitter.json
>>  version: 3.3
>>
>> =============================================================================================
>> Source file:
>> https://github.com/create3000/Library/blob/main/Tests/Components/ParticleSystems/VolumeEmitter.x3d
>> Note changes to VolumeEmitter.json to make it play well with JSON schema
>> (not sure if correct or not):
>>
>> $ diff
>> ../X3DJSONLD/src/main/Library/Tests/Components/ParticleSystems/VolumeEmitter.json
>>  VolumeEmitter.json
>> 6c6
>> <     "JSON schema":"
>> https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json
>> ",
>> ---
>> >     "JSON schema":"
>> https://www.web3d.org/specifications/x3d-4.0-JSONSchema.json",
>> 170c170
>> <               "-colorRamp":
>> ---
>> >               "-colorRamp": [
>> 175c175,176
>> <                 },
>> ---
>> >                 }
>> >             ],
>> 233c234
>> < }
>> \ No newline at end of file
>> ---
>> > }
>>
>>
>> On Mon, Jul 4, 2022 at 5:27 PM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> As previously posted:
>>> "Changed subject to be more focused on what's not working. Thanks for
>>> the effort on VolumeEmitter.x3d, which despite not passing the x3d
>>> validator, products of the XML are passing jsonlint and python. Note that
>>> the VolumeEmitter.json passes jsonlint (and I guess the jshint and jslint
>>> or whatever you use), but it does not pass the Ajv validator.  Will respond
>>> on the other thread if something comes up."
>>>
>>> Apparently it pays to have a non-empty schema!
>>>
>>> Changes:
>>>
>>> diff --git a/x3d-4.0-JSONSchema.json b/x3d-4.0-JSONSchema.json
>>> index 5834443..abfcd9f 100644
>>> --- a/x3d-4.0-JSONSchema.json
>>> +++ b/x3d-4.0-JSONSchema.json
>>> @@ -1,7 +1,7 @@
>>>  {
>>>    "$schema": "https://json-schema.org/draft/2020-12/schema",
>>>    "$id": "https://www.web3d.org/specifications/x3d-4.0-JSONSchema.json
>>> ",
>>> -  "title": "X3D V4.0 JSON Schema, generated 2022/05/24 17:50:41",
>>> +  "title": "X3D V4.0 JSON Schema, generated 2022/07/04 17:13:07",
>>>    "description": "Experimental JSON Schema for X3D V4.0",
>>>    "type": "object",
>>>    "properties": {
>>> @@ -19398,8 +19398,10 @@
>>>                "type": "number"
>>>              },
>>>              "@fieldOfView": {
>>> -              "$comment": "MFFloat inputOutput",
>>> +              "$comment": "SFVec4f inputOutput",
>>>                "type": "array",
>>> +              "minItems": 4,
>>> +              "maxItems": 4,
>>>                "prefixItems": [
>>>                  {
>>>                    "default": -1,
>>> @@ -19418,9 +19420,7 @@
>>>                    "type": "number"
>>>                  }
>>>                ],
>>> -              "items": {
>>> -                "type": "number"
>>> -              }
>>> +              "items": false
>>>              },
>>>              "@jump": {
>>>                "default": true,
>>>
>>>
>>>
>>> Sorry for confusion!
>>>
>>> John
>>>
>>>
>>> On Sun, Jul 3, 2022 at 11:24 PM Brutzman, Donald (Don) (CIV) <
>>> brutzman at nps.edu> wrote:
>>>
>>>> [Changed subject line for readability/searchability – this is about
>>>> OrthoViewpoint fieldOfView]
>>>>
>>>>
>>>>
>>>>    1. Invalid source XML in your .x3d excerpt: simple types should not
>>>>    have commas within them.
>>>>
>>>>
>>>>
>>>>    - OrthoViewpoint fieldOfView='-1.5, -1.5, 1.5, 1.5'
>>>>
>>>>
>>>>
>>>>    1. OrthoViewpoint fieldOfView is defined as MFFloat in
>>>>    specification but ought to be SFVec4f, since it must always have four
>>>>    numbers defining ordered values (minimum_x, minimum_y, maximum_x,
>>>>    maximum_y).
>>>>
>>>>
>>>>
>>>> I am somehow locked out of mantis and so can’t verify what we
>>>> previously said about this (if anything).  Seems like a simple
>>>> specification erratum.
>>>>
>>>>
>>>> Correlation confirmation: TextureProjectorParallel has fieldOfView
>>>> SFVec4f.  Meanwhile Viewpoint GeoViewpoint and TextureProjector have
>>>> SFFloat.
>>>>
>>>>
>>>>
>>>>    1. I think that the various fieldOfView types are handled in the
>>>>    stylesheet s correctly now, checked in.
>>>>
>>>>
>>>>
>>>> I have also applied a tentative fix to X3D DOCTYPE, Schema, Tooltips
>>>> and X3DUOM, but will wait to deploy any updates (including X3DJSAIL,
>>>> X3DPSAIL) until checking mantis to confirm status.
>>>>
>>>>
>>>>
>>>> Thanks John for reporting this error, very helpful.
>>>>
>>>>
>>>>
>>>> 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
>>>>
>>>>
>>>>
>>>> *From:* x3d-public <x3d-public-bounces at web3d.org> *On Behalf Of *John
>>>> Carlson
>>>> *Sent:* Sunday, July 3, 2022 12:10 AM
>>>> *To:* X3D Graphics public mailing list <x3d-public at web3d.org>;
>>>> holger.seelig at gmail.com
>>>> *Subject:* [x3d-public] X3dToJson.xslt, X3dToPython.xslt,
>>>> create3000/Library Test ParticleSystem possible issues. Though may not pass!
>>>>
>>>>
>>>>
>>>> Don,
>>>>
>>>>
>>>>
>>>> Here are some issues with various X3dTo*.xslt:
>>>>
>>>>
>>>>
>>>> grep fieldOfView VolumeEmitter.py
>>>> VolumeEmitter.py:
>>>>  OrthoViewpoint(description='OrthoViewpoint',fieldOfView=-1.5,-1.5,1.5,1.5),
>>>>
>>>>
>>>>
>>>> $ grep fieldOfView VolumeEmitter*
>>>> VolumeEmitter.json:              "@fieldOfView":-1.5,-1.5,1.5,1.5
>>>> VolumeEmitter.x3d:        fieldOfView='-1.5, -1.5, 1.5, 1.5'/>
>>>>
>>>>
>>>>
>>>> In the JSON, the MFFloat is does not appear to be an array, with []
>>>> around the numbers.
>>>>
>>>>
>>>>
>>>> In the python, there's no tuple or list markers denoting a tuple or list
>>>>
>>>>
>>>>
>>>> Note in the XML, both the "," and the space is separating the floats in
>>>> the MFFloat.  I haven't seen that the MFBools with ", " as separators is
>>>> working, but perhaps the problem is more general.
>>>>
>>>>
>>>>
>>>> Links to XML below.
>>>>
>>>> ====================================================
>>>>
>>>> Holger,
>>>>
>>>>
>>>>
>>>> I fully realize that these are test samples, and they may not pass,
>>>> thus when I convert x3d  to python and run, these errors may appear (which
>>>> may be totally valid).
>>>>
>>>>
>>>>
>>>> BoundedPhysicsModel.py
>>>> x3d.py package 4.0.64.1 loaded, have fun with X3D Graphics!
>>>> Traceback (most recent call last):
>>>>   File
>>>> "C:\Users\john\X3DJSONLD\src\main\python\net\x3djsonld\Library\Tests\Components\ParticleSystems\BoundedPhysicsModel.py",
>>>> line 82, in <module>
>>>>
>>>> emitter=ConeEmitter(position=(0,-3,0),direction=(1,4,0),angle=0.4,speed=0.2,mass=3200),
>>>>   File "C:\Users\john\X3DJSONLD\venv\lib\site-packages\x3d\x3d.py",
>>>> line 29419, in __init__
>>>>     self.direction = direction
>>>>   File "C:\Users\john\X3DJSONLD\venv\lib\site-packages\x3d\x3d.py",
>>>> line 29450, in direction
>>>>     assertLessThanEquals('direction', direction, 1)
>>>>   File "C:\Users\john\X3DJSONLD\venv\lib\site-packages\x3d\x3d.py",
>>>> line 1847, in assertLessThanEquals
>>>>     assert isLessThanEquals(value, maximum), fieldName + '=' +
>>>> str(value) + ' fails assertLessThanEquals maximum=' + str(maximum)
>>>> AssertionError: direction=(1, 4, 0) fails assertLessThanEquals maximum=1
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> PointEmitter.py
>>>> x3d.py package 4.0.64.1 loaded, have fun with X3D Graphics!
>>>> Traceback (most recent call last):
>>>>   File
>>>> "C:\Users\john\X3DJSONLD\src\main\python\net\x3djsonld\Library\Tests\Components\ParticleSystems\PointEmitter.py",
>>>> line 92, in <module>
>>>>     WindPhysicsModel(speed=0.8,gustiness=0.8,turbulence=2),
>>>>   File "C:\Users\john\X3DJSONLD\venv\lib\site-packages\x3d\x3d.py",
>>>> line 99589, in __init__
>>>>     self.turbulence = turbulence
>>>>   File "C:\Users\john\X3DJSONLD\venv\lib\site-packages\x3d\x3d.py",
>>>> line 99643, in turbulence
>>>>     assertZeroToOne('turbulence', turbulence)
>>>>   File "C:\Users\john\X3DJSONLD\venv\lib\site-packages\x3d\x3d.py",
>>>> line 1818, in assertZeroToOne
>>>>     assert isZeroToOne(value), str(fieldName) + '=' + str(value) + '
>>>> fails assertZeroToOne requirements: value(s) must be in range [0..1]'
>>>> AssertionError: turbulence=2 fails assertZeroToOne requirements:
>>>> value(s) must be in range [0..1]
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> SurfaceEmitter.py
>>>> x3d.py package 4.0.64.1 loaded, have fun with X3D Graphics!
>>>> Traceback (most recent call last):
>>>>   File
>>>> "C:\Users\john\X3DJSONLD\src\main\python\net\x3djsonld\Library\Tests\Components\ParticleSystems\SurfaceEmitter.py",
>>>> line 50, in <module>
>>>>     MetadataSet(DEF='children',name='children',reference='
>>>> http://titania.create3000.de
>>>> <https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftitania.create3000.de%2F&data=05%7C01%7Cbrutzman%40nps.edu%7C21c0ec8ed9424e5b9d1808da5cc31d7f%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637924290510977644%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000%7C%7C%7C&sdata=%2F4uxzeZzuYzvUqHz8AJaKk0zHgBuEfyrAyNzWK5XrYs%3D&reserved=0>
>>>> ',
>>>> TypeError: MetadataSet.__init__() got an unexpected keyword argument
>>>> 'appearance'
>>>>
>>>>
>>>>
>>>> Original XML here:  Library/Tests/Components/ParticleSystems at main ·
>>>> create3000/Library (github.com)
>>>> <https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcreate3000%2FLibrary%2Ftree%2Fmain%2FTests%2FComponents%2FParticleSystems&data=05%7C01%7Cbrutzman%40nps.edu%7C21c0ec8ed9424e5b9d1808da5cc31d7f%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637924290510977644%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000%7C%7C%7C&sdata=AXA6SvrhXPQysoFmBpTi8vsUFZPbJC9gW60AGXCyfW8%3D&reserved=0>
>>>>
>>>>
>>>>
>>>> Attached generated python code.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20220704/d9b5e5b0/attachment-0001.html>


More information about the x3d-public mailing list