[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