[x3d-public] I played a little. Re: Scene Access Interface: autogenerating Python

John Carlson yottzumm at gmail.com
Fri Aug 11 05:45:57 PDT 2017


One quick test would be to split up the set() calls onto separate lines.
I am trying to reduce computer usage due to carpal tunnel, but I may be
able to break out the setters into separate statements.   Best to do it by
hand first though.

John

On Aug 11, 2017 8:13 AM, "Masaki Aono" <aono at tut.jp> wrote:

> Dear John Carlson,  to whom it may concern;
>
> Thank you for sending HelloWorld.py.
>
> I could play with it to some extent on my laptop (Windows 10).
>
> I am not certain if I send an error report to you all.
>
> If this is not the place for discussion, please forgive me.
>
>
> C:\Aono\ISO-H29\Arlington\Python\pythonSAI>python
> Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24)
> [MSC v.1900 64 bit (AMD64)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from jnius import autoclass
> >>> from X3Dautoclass import *
> >>> X3D0 =  X3DObject().setProfile("Immersive").setVersion("3.3")
> >>> head1 = headObject()
> >>> meta2 = metaObject().setName("title").setContent("HelloWorld.x3d")
> >>> meta3 = metaObject().setName("description").setContent("Simple X3D
> scene example: Hello World!")
> >>> head1.addMeta(meta3)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b1aabf68
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955928 at 0x247b460aa50>>
> >>> meta4 = metaObject().setName("created").setContent("30 October 2000")
> >>> head1.addMeta(meta4)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46cfe08
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955948 at 0x247b4629870>>
> >>> meta5 = metaObject().setName("modified").setContent("14 April 2017")
> >>> head1.addMeta(meta5)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46cfa40
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955970 at 0x247b4629cb0>>
> >>> meta6 = metaObject().setName("creator").setContent("Don Brutzman")
> >>> head1.addMeta(meta6)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46cfaf0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955998 at 0x247b4629b90>>
> >>> meta7 = metaObject().setName("Image").setContent("HelloWorld.tall.
> png")
> >>> head1.addMeta(meta7)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46cf2b0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f9559c0 at 0x247b4629a50>>
> >>> meta8 = metaObject().setName("reference").setContent("http:/
> /en.wikipedia.org/wiki/Hello_world"
> <http://en.wikipedia.org/wiki/Hello_world>)
> >>> head1.addMeta(meta8)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b49f9af0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f9559e0 at 0x247b4629150>>
> >>> meta9 = metaObject().setName("reference").setContent("https:
> //en.wikipedia.org/wiki/Hello#.22Hello.2C_World.22_computer_program"
> <https://en.wikipedia.org/wiki/Hello#.22Hello.2C_World.22_computer_program>
> )
> >>> head1.addMeta(meta9)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b49f9eb8
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955a00 at 0x247b4629070>>
> >>> meta10 = metaObject().setName("reference").setContent("https:
> //en.wikipedia.org/wiki/\" <https://en.wikipedia.org/wiki/%5C>Hell
> o,_World!\"_program")
> >>> head1.addMeta(meta10)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46b2a98
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955a60 at 0x247b46290d0>>
> >>> head1.addMeta(meta10)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b49f9af0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955a68 at 0x247b4629a50>>
> >>> meta11 = metaObject().setName("reference").setContent("http:/
> /en.wikibooks.org/w/index.php?title=Computer_Programming/Hello_world"
> <http://en.wikibooks.org/w/index.php?title=Computer_Programming/Hello_world>
> )
> >>> head1.addMeta(meta11)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46b24c0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955a88 at 0x247b4629730>>
> >>> meta12 = metaObject().setName("reference").setContent("http:/
> /www.HelloWorldExample.net" <http://www.HelloWorldExample.net>)
> >>> head1.addMeta(meta12)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b49f9eb8
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955aa8 at 0x247b4629170>>
> >>> meta13 = metaObject().setName("reference").setContent("http:/
> /www.web3D.org" <http://www.web3D.org>)
> >>> head1.addMeta(meta13)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46b2468
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955ac8 at 0x247b46292b0>>
> >>> meta14 = metaObject().setName("reference").setContent("http:/
> /www.web3d.org/realtime-3d/news/internationalization-x3d"
> <http://www.web3d.org/realtime-3d/news/internationalization-x3d>)
> >>> head1.addMeta(meta14)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b46b2d58
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955ae8 at 0x247b4629430>>
> >>> meta15 = metaObject().setName("reference").setContent("http:/
> /www.web3d.org/x3d/content/examples/HelloWorld.x3d"
> <http://www.web3d.org/x3d/content/examples/HelloWorld.x3d>)
> >>> head1.addMeta(meta15)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493f360
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955b18 at 0x247b4629390>>
> >>> meta16 = metaObject().setName("reference").setContent("http:/
> /X3dGraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes"
> <http://X3dGraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes>)
> >>> head1.addMeta(meta16)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493f468
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955b38 at 0x247b46295d0>>
> >>> meta17 = metaObject().setName("identifier").setContent("http:
> //X3dGraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/
> HelloWorld.x3d"
> <http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.x3d>
> )
> >>> head1.addMeta(meta17)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493f410
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f954798 at 0x247b4629670>>
> >>> meta18 = metaObject().setName("license").setContent("http://www.
> web3d.org/x3d/content/examples/license.html"
> <http://www.web3d.org/x3d/content/examples/license.html>)
> >>> head1.addMeta(meta18)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493f4c0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f9547c0 at 0x247b4629690>>
> >>> meta19 = metaObject().setName("generator").setContent("X3D-Edit 3.3,
> https://savage.nps.edu/X3D-Edit")
> >>> head1.addMeta(meta19)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493f570
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f9547e8 at 0x247b46296b0>>
> >>> meta20 = metaObject().setName("reference").setContent("
> HelloWorld.wrl")
> >>> head1.addMeta(meta20)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493fb48
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f954808 at 0x247b46295b0>>
> >>> meta21 = metaObject().setName("reference").setContent("
> HelloWorld.x3dv")
> >>> head1.addMeta(meta21)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493f5c8
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f954828 at 0x247b46296d0>>
> >>> meta22 = metaObject().setName("reference").setContent("
> HelloWorld.x3db")
> >>> head1.addMeta(meta22)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b493fa40
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f954850 at 0x247b46296f0>>
> >>> meta23 = metaObject().setName("reference").setContent("
> HelloWorld.xhtml")
> >>> head1.addMeta(meta23)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b4a118e0
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f954878 at 0x247b4629750>>
> >>> meta24 = metaObject().setName("reference").setContent("
> HelloWorld.json")
> >>> head1.addMeta(meta24)
> <org.web3d.x3d.jsail.Core.headObject at 0x247b4a11048
> jclass=org/web3d/x3d/jsail/Core/headObject jself=<LocalRef
> obj=0x-4f955f58 at 0x247b4629950>>
> >>>
> >>> head1.addComments(CommentsBlock("Alternate encodings: VRML97, X3D
> ClassicVRML Encoding, X3D Compressed Binary Encoding (CBE), X3DOM, JSON"))
> <org.web3d.x3d.jsail.X3DConcreteElement at 0x247b46e1048
> jclass=org/web3d/x3d/jsail/X3DConcreteElement jself=<LocalRef
> obj=0x-4f955c80 at 0x247b460aa30>>
> >>> X3D0.setHead(head1)
> <org.web3d.x3d.jsail.Core.X3DObject at 0x247b49f9af0
> jclass=org/web3d/x3d/jsail/Core/X3DObject jself=<LocalRef obj=0x-4f954dc8
> at 0x247b46299b0>>
> >>> Scene25 = SceneObject()
> >>>
> >>> Scene25.addComments(CommentsBlock("Example scene to illustrate X3D
> nodes and fields (XML elements and attributes)"))
> <org.web3d.x3d.jsail.X3DConcreteElement at 0x247b4a1fe60
> jclass=org/web3d/x3d/jsail/X3DConcreteElement jself=<LocalRef
> obj=0x-4f954de0 at 0x247b46299f0>>
> >>> WorldInfo26 = WorldInfoObject().setTitle("Hello world!")
> >>> Scene25.addChild(WorldInfo26)
> <org.web3d.x3d.jsail.Core.SceneObject at 0x247b4a48678
> jclass=org/web3d/x3d/jsail/Core/SceneObject jself=<LocalRef
> obj=0x-4f955838 at 0x247b4629a10>>
> >>> Group27 = GroupObject()
> >>> Viewpoint28 = ViewpointObject().setDEF("ViewUpClose").
> setCenterOfRotation([0,-1,0]).setDescription("Hello
> world!").setPosition([0,-1,7])
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'org.web3d.x3d.sai.Navigation.X3DViewpointNode' object
> has no attribute 'setCenterOfRotation'
>
>
> At this point, I encountered the above error.
>
> It looks like "setCenterOfRotation" may not be in X3DViewpointNode (I may
> be wrong).
>
> Please note that Python 3.6 (which is not Python 2.7) is not a problem
> here, I think.
>
> Sincerely,
>
>
>
>
> On 2017/08/11 8:11, John Carlson wrote:
>
> Here is HelloWorld.py as generated from my PythonSerializer.js.   Note
> that I do not use chained calls.
>
> This is because I was trying to get pyjnius to work. If we had some way of
> getting code like this running, it would be great.  I could modify my
> PythonSerializer.js and perhaps include the serializer in X3DJSAIL.
>
>
>
> My JavaScript serializer does not work in X3DJSAIL yet, and I have not
> been working on it since my initial attempt.  I have compatible,
> containable changes to the X3DJSAIL stylesheet so that X3DJSAIL should be
> able to generate JavaScript “SAI”/Nashorn application code.
>
>
>
> The problem appears to be getting the JavaScript XML parsers integrated
> with X3DJSAIL. We may be able to use JSON instead: XML -> JSON -> DOM ->
> python.  The long way around, instead of XML -> DOM -> python.
>
>
>
> Or we can just use my serializer in JavaScript, and translate JSON -> DOM
> -> python. The XML to JSON would be handled by X3dToJson.xslt (X3DJSAIL).
>
>
>
> I do have examples of Java -> TypeScript and JavaScript, but they don’t
> work.
>
>
>
> I do not have a Java -> Python translator.  Good luck finding one.
>
>
>
> John
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
> Windows 10
>
>
>
> *From: *Don Brutzman <brutzman at nps.edu>
> *Sent: *Thursday, August 10, 2017 5:31 PM
> *To: *Myeong Won Lee <mwlee at suwon.ac.kr>; Masaki Aono <aono at tut.jp>; Roy
> Walmsley <roy.walmsley at ntlworld.com>; John Carlson <yottzumm at gmail.com>
> *Cc: *X3D Graphics public mailing list <x3d-public at web3d.org>
> *Subject: *Scene Access Interface: autogenerating Python
>
>
>
> Myeong Won Lee and Masaki Aono:
>
>
>
> Thank you for meeting today to discuss X3D Object Model transformation by
> applying an XSLT stylesheet to autogenerate of SAI codebases.
>
>
>
> Myeong Won Lee, I also thought that your Unity HAnim player is wonderful.
> I recommend that you include some examples in the public release, they will
> generate strong interest.  Having some public examples while also allowing
> private examples provides appealing choices and the best possible support
> for your students.
>
>
>
> Here is summary excerpted from this week's Web3D meeting report.
>
> ================================================================
>
> 3.            Object Model for X3D (OM4X3D)
>
> a.            The Object Model for X3D (OM4X3D) is a full set of
> object-oriented interfaces for all nodes, fields and statements in the X3D
> Abstract Specification.
>
> b.            OM4X3D is produced by decorating the X3D XML Schema with
> carefully structured annotations that describe the entire object-oriented
> nature of the X3D scene graph. http://www.web3d.org/specifications/OM4X3D/
> ObjectModelForX3dCreation.png
>
> c.             Instantiation: Object Model for X3D definitions are
> explicitly listed in X3DObjectModel 3.3.xml with corresponding XML schema
> x3dObjectModel.xsd
>
> d.            Ongoing public/private dialog using the x3d-public at web3D.org
> mailing list and presentation at Web3D 2017 Conference has been productive.
> http://www.web3d.org/specifications/OM4X3D/ObjectModelForX3dMasterClassWe
> b3dConference2017June7.pdf
>
> e.            Demonstration of strict object model in X3D JSON Encoding,
> which is 98% complete and undergoing extensive review and testing,
> initial-draft specification has been prepared.
>
> f.             Initial implementations are available in JavaScript, Java,
> and C++.  Also planning to prepare programming-language implementations for
> C, C#.
>
> g.            Two new versions for Python are started, with dialog
> occurring to discern best practices.
>
> h.            SAI no longer just Script node in Browser object, includes
> full application-oriented API.  This will lead to some changes and
> generalizations in 19775-2 Abstract SAI specification.
>
> i.              Multiple emerging SAI specifications and implementations
> are shown on updated  draft X3D Specifications Relationships diagram
> (attached)
>
> j.             Implementation: X3D JSON Loader (X3DJSONLD)
> https://github.com/coderextreme/X3DJSONLD
>
> k.            Implementation: X3D Java Scene Access Interface Library
> (X3DJSAIL) http://www.web3d.org/specifications/java/
> X3dJavaSceneAuthoringInterface.html
>
> l.              Under consideration: integration into X3D Abstract
> Specification 19775-1 to more thoroughly expand on current abstract
> interface hierarchy.
>
> m.           Emerging capability: coherent X3D center, multiple different
> programming languages that offer common design patterns to programmers to
> create identical scene graphs.
>
> ================================================================
>
>
>
> The essence of autogeneration is that proper code patterns must first
> exist.  Once we get a few classes with the design patterns of interest, and
> generation of a few classes, then creation of all classes follows in a
> straightforward manner.
>
>
>
> I recommend that the first example we work with is HelloWorld.x3d into .c
> .cpp .cs and .py source.
>
>                 http://www.web3d.org/x3d/content/examples/HelloWorld.x3d
>
>                 http://www.web3d.org/x3d/content/examples/HelloWorld.html
>
>
>
> Regarding Python: John Carlson has done intriguing work that
> auto-translates Java source in X3DJSAIL to Python.  This is interesting
> because it would keep the codebases closely aligned, making it easier to
> learn and debug.  Consistency is easily maintained across X3D versions and
> X3D bugfixes by re-running each distribution.  Flexibility is also possible
> since each codebase will include custom utility classes, methods and
> examples.
>
>
>
> Next steps for Python: recommend that we
>
> - Examine Masaki's work and compare it with the pyjnius conversions.
>
> - Autogenerate Python library (X3DPSAIL perhaps?) to provide Python
> codebase support.
>
> - Iterate until we have a good design pattern for HelloWorld and other
> exemplars.
>
> - Create an X3dToPython.xslt stylesheet that can convert someModel.x3d to
> someModel.py source.
>
> - run that across all scenes X3D Example Archives, detect and resolve
> errors, publish builds.
>
> - make T-shirts  8)
>
>
>
> As with JavaScript and Java, it is good to use the x3d-public list for
> this work.  Also suitable for a weekly update reports and monthly telcon
> item for X3D Working Group.
>
>
>
> 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 <(831)%20656-2149>
>
> X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/
> brutzman
>
>
>
>
> --
> ******************************************************
> 青野雅樹
> 豊橋技術科学大学 情報・知能工学系
> 知識データ工学・情報検索研究室
> 〒441-8580 豊橋市天伯町雲雀ヶ丘1-1TEL:(0532) <(0532)> 44-6764
> FAX:(0532) 44-6757
>
> Masaki Aono
> Professor
> Knowledge Data Engineering Laboratory
> Dept. of Computer Science and Engineering
> Toyohashi University of Technology
> 1-1 Hibarigaoka, Tempaku-cho,
> Toyohashi-shi, Aichi 441-8580 JAPAN
> TEL: 81+532-44-6764
> FAX:81+532-44-6757
> email: aono at tut.jp
> ******************************************************
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20170811/747bca18/attachment-0001.html>


More information about the x3d-public mailing list