[x3d-public] C/C++/C#---X3DCSAIL; specification and source meeting minutes

John Carlson yottzumm at gmail.com
Sun Sep 6 23:50:46 PDT 2020


My initial tests indicated that a command line compile may be difficult.
It may be worth setting up a cmake/qt or visual studio example.   My
understanding is the X3D library included with your code is created with
visual studio.   A combination of cmake and VS may work.

John

On Sun, Sep 6, 2020 at 6:14 PM Myeong Won Lee <myeongwonlee at gmail.com>
wrote:

> Dear John,
>
> Thank you for your efforts.
>
> > If you like, I will try to accomplish the compilation to WebAssembly
> task.
>
> Because I am not familiar with WebAssembly and autogeneration, it would be
> appreciated if you could do that.
> Thank you again for your interest and assistance with X3D C/C++/C#
> language binding.
>
> Sincerely,
>
> Myeong
>
> On Sat, Sep 5, 2020 at 12:55 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> Myeong, thank you for your work on X3DCSAIL.
>>
>> There are currently 2 styles of library generation, xslt stylesheet and
>> python reading X3DUOM.   The python approach breaks down to whole library
>> generation and class reference implementation—“auto class” built on top of
>> X3DJSAIL.   I am currently working on an ECMAScript 6 library without auto
>> class.
>>
>> You may choose to do the proven xslt stylesheet method (declarative,
>> proven, supported by Don and NPS).  I have chosen python to avoid writing
>> in XML.
>>
>> Generally speaking, I would prefer a library compiled by emscripten and
>> LLVM, such that it could be deployed to WebAssembly and WASI.  Perhaps
>> using empscripten on your existing source code would be a good next thing
>> to do. If we have WebAssembly as a base, that invites programming languages
>> to use our libraries, and supports the whole X3DV4 ideas for web
>> integration.   We already have JavaScript and Python solutions on the web,
>> why not C/C++/C#?
>>
>> If we could convert xslt to WebAssembly, that would be very cool.   It’s
>> probably not our bailiwick—I’m just trying to lure Don into the web.
>>
>>
>> Yes, we should look at performance between WebAssembly and
>> non-WebAssembly as well.
>>
>> If you like, I will try to accomplish the compilation to WebAssembly task.
>>
>> Thanks!
>>
>> John
>>
>> On Fri, Sep 4, 2020 at 10:14 PM Myeong Won Lee <myeongwonlee at gmail.com>
>> wrote:
>>
>>> Dear John,
>>>
>>> Thank you for your email.
>>>
>>> We didn't use autogeneration, and all the classes and functions in Annex
>>> A and B in the text of the specification were rewritten manually.
>>> In other words, with one by one editing.
>>> A huge amount of time was taken to write them.
>>>
>>> In addition, the X3DLib has partial libraries (binary) implemented among
>>> them.
>>> Partial X3D components have been implemented.
>>> We will enhance the X3DLib by incorporating the classes and functions in
>>> Annex A and B.
>>>
>>> We must learn how to use autogeneration for the code.
>>> After getting the results of autogeneration, we will figure out the
>>> performance gain of auto generation by comparing our manually generated
>>> code and the autogenerated code.
>>>
>>> Sincerely,
>>>
>>> Myeong
>>>
>>> On Fri, Sep 4, 2020 at 10:56 AM John Carlson <yottzumm at gmail.com> wrote:
>>>
>>>> What we need is an easy way to upgrade the libraries using the X3DUOM
>>>> when the standard changes.  If you have a tool which does that, that would
>>>> be great!  Otherwise, your example is great, and we will pursue
>>>> autogeneration of the libraries as a separate activity, following your
>>>> pattern.
>>>>
>>>> Does that make sense?
>>>>
>>>> John
>>>>
>>>> On Thu, Sep 3, 2020 at 6:09 PM Myeong Won Lee <myeongwonlee at gmail.com>
>>>> wrote:
>>>>
>>>>> Dear Don,
>>>>>
>>>>> In the X3D C/C++ implementation code, the reason that there are no
>>>>> sources for X3D nodes is that the X3D viewer reads and parses the example
>>>>> X3D file and renders a X3D Box using the X3DLib directly.
>>>>> Does this make sense to you?
>>>>> The X3DLib includes a huge number of functions as a library.
>>>>> Because it seems necessary to include the C++ source code for the
>>>>> example X3D nodes in Annex C, we will provide them separately from X3DLib.
>>>>>
>>>>> Sincerely,
>>>>>
>>>>> Myeong
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------ 원본 메일 내용 ------------
>>>>>> *보낸 사람 :* "Don Brutzman"<brutzman at nps.edu>
>>>>>> *받는 사람 :* "X3D Graphics public mailing list" <x3d-public at web3d.org>
>>>>>> *참      조 :* "John Carlson" <yottzumm at gmail.com>, "Roy Walmsley" <
>>>>>> roy.walmsley at ntlworld.com>, "Myeong Won Lee" <mwlee at suwon.ac.kr>,
>>>>>> "Doug Sanden" <gpugroup at gmail.com>
>>>>>> *메일 제목 :* Re: C/C++/C#---X3DCSAIL; specification and source meeting
>>>>>> minutes
>>>>>> *보낸 날짜 :* Wed, 2 Sep 2020 20:09:42 -0700
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Attendees: MWL, DPB
>>>>>>
>>>>>> We are finally back in motion on these specifications and met today,
>>>>>> making progress.
>>>>>>
>>>>>> Full design plan (produced earlier) appears below today's minutes.
>>>>>>
>>>>>> ---
>>>>>>
>>>>>> 1. Specifications.
>>>>>>
>>>>>> The Github site is where Web3D Consortium members have full access to
>>>>>> draft specifications.
>>>>>>
>>>>>> [1.1] Github, Web3D Consortium, X3D
>>>>>> https://github.com/Web3DConsortium
>>>>>> https://github.com/Web3DConsortium/X3D
>>>>>>
>>>>>> [1.2] X3D SAI Language Bindings
>>>>>> https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777
>>>>>>
>>>>>> [1.3] X3D 19777-3 C Language Bindings
>>>>>>
>>>>>> https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-3/ISO-IEC19777-3v3.3/ISO-IEC19777-3v3.3-CD
>>>>>>
>>>>>> [1.4] X3D 19777-4 C++ Language Bindings
>>>>>>
>>>>>> https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-4/ISO-IEC19777-4v3.3/ISO-IEC19777-4v3.3-CD
>>>>>>
>>>>>> [1.5] X3D 19777-5 C# Language Bindings
>>>>>>
>>>>>> https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-5/ISO-IEC19777-5v3.3/ISO-IEC19777-5v3.3-CD
>>>>>>
>>>>>> [1.6] X3D 19777 New Work Item Proposals (NWIP)
>>>>>> https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/NWIP
>>>>>>
>>>>>> Looking at each of the above Committee Draft (CD) directories, they
>>>>>> were last touched 8 March 2019 (18 months ago).
>>>>>>
>>>>>> *Myeong has updates to each of these. She is sending zip files and I
>>>>>> will commit them into github.*
>>>>>>
>>>>>> Because they have changed, and because we are now working to meet ISO
>>>>>> deadlines, we think that these should all be saved separately as an updated
>>>>>> Working Draft #1. So new directories will say "WD1" instead of "CD" to
>>>>>> match our naming conventions.
>>>>>>
>>>>>> Our next question is whether we should go to version 4.0 (rather than
>>>>>> 3.3). This seems like a good idea... but there are several issues.
>>>>>>
>>>>>> a. Are they complete for 4.0?
>>>>>> b. Does the relevant SAI 19775-2 for X3D also have to be updated?
>>>>>> c. Can we autogenerate the new parts of these language bindings to
>>>>>> match X3D4.
>>>>>>
>>>>>> We? are hoping that, following some further editorial work, that the
>>>>>> answer to all three of these questions can become "yes" for X3D version
>>>>>> 4.0.
>>>>>>
>>>>>> [1.7] Web3D Recommended Standards
>>>>>> https://www.web3d.org/standards
>>>>>>
>>>>>> [1.8] X3D 19775-2, ISO/IEC 19775-2:2015, V3.3,
>>>>>> X3D Abstract : Scene Access Interface (SAI)
>>>>>> International Standard (IS), 2015-04-24
>>>>>> https://www.web3d.org/documents/specifications/19775-2/V3.3/index.html
>>>>>>
>>>>>> A quick review of Part 2: Scene access interface (SAI) looks like
>>>>>> very very few changes will occur for the transition from X3D Architecture
>>>>>> v3.3 to v4.0.
>>>>>>
>>>>>> Recommended next steps:
>>>>>> d. Have a dedicated meeting of X3D Working to review both
>>>>>> specification and Mantis issues list to see what changes are needed to
>>>>>> create 19775-2 version 4.0.
>>>>>> e. If indeed small, then we create such a working draft on github.
>>>>>> f. If large, then we will defer to January 2021 following expected
>>>>>> completion of X3D 19775-1 X3D version 4.0
>>>>>> g. We work on version 4 for all language bindings so that we don't
>>>>>> have to repeat further specification revisions later.
>>>>>>
>>>>>> Definitely the sequencing of this work needs to be considered in
>>>>>> light of ISO deadlines and our ability to accomplish work.
>>>>>>
>>>>>> Rephrase: if it is possible to go fast, let's try. Parallel work is
>>>>>> likely possible since functionality is stable. If we are too busy, then we
>>>>>> wait for January.
>>>>>>
>>>>>> Dick please review and verify how we might best handle these
>>>>>> specification drafts for ISO.
>>>>>>
>>>>>> ---
>>>>>>
>>>>>> 2. Example implementations.
>>>>>>
>>>>>> Suwon University provided some example source code last year.
>>>>>>
>>>>>> Two types of code are possible. First type is simply for handling
>>>>>> data structures; second type is a renderer.
>>>>>>
>>>>>> Last year's examples are all sitting in Web3D version control on
>>>>>> SourceForge, with 5 subdiretories:
>>>>>>
>>>>>> [2.0] X3D Sourceforge subversion arcchives
>>>>>>
>>>>>> https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/
>>>>>> =
>>>>>>
>>>>>> a. c, not seen: source code for nodes, or presentation on this work.
>>>>>> b. cpp, not seen: source code for nodes, or presentation on this
>>>>>> work.
>>>>>> c. csharp, found: both source code for nodes and README presentation
>>>>>>
>>>>>> Myeong has an excellent long presentation that describes many things
>>>>>> in these archives, she will send and we will add.
>>>>>>
>>>>>> At first is seems like the c and cpp directories do not include
>>>>>> source implementations for each and every node (Box, Group, Appearance
>>>>>> etc.) because they are actually found in the X3DLib .h files. There is
>>>>>> typically a mix of Abstracts.h Concretes.h and X3DLib.h files, be sure to
>>>>>> look closely. For example code patterns, see the following:
>>>>>>
>>>>>> d. c,
>>>>>> https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/c/X3DLib/Concretes.h
>>>>>> e. cpp,
>>>>>> https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/cpp/X3DLib/Concretes.h
>>>>>> f. csharp,
>>>>>> https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/csharp/3.X3DLib/X3DNode/
>>>>>> (many files)
>>>>>>
>>>>>> Although all of this code was created manually (OMG!) everything
>>>>>> looks to me like well-defined code patterns that might autogenerated from
>>>>>> X3DUOM.
>>>>>>
>>>>>> d. python: contains X3dPythonViewer which is a pure python viewer for
>>>>>> X3D. This uses manual patterns but might be upgraded (by someone brave and
>>>>>> magnificent!) to match our upgraded code patterns for X3DPSAIL.
>>>>>>
>>>>>> [2.1] Python X3D Package x3d.py
>>>>>> https://pypi.org/project/x3d
>>>>>>
>>>>>> [2.2] X3D Python Scene Access Interface Library (X3DPSAIL)
>>>>>> https://www.web3d.org/x3d/stylesheets/python/python.html
>>>>>>
>>>>>> e. suwon (temporary holding directory, used only for sharing files
>>>>>> prior to production)
>>>>>>
>>>>>>
>>>>>> To use X3DUOM to create both codebases and draft specification
>>>>>> annexes, we can follow the existing solutions already provided for Java and
>>>>>> Python.
>>>>>>
>>>>>> Given today's code review, I can confirm that we can follow the exact
>>>>>> approaches used already for Java and Python. The following summary provide
>>>>>> much detail.
>>>>>>
>>>>>> ---
>>>>>>
>>>>>> 3. Next steps.
>>>>>>
>>>>>> a. Specification: Myeong Dick and I can work on the sources.
>>>>>>
>>>>>> b. Example implementations: *who wants to help* with the C, C++, C#
>>>>>> interfaces? We need expert review on these interfaces and sample
>>>>>> implementations before we try to standardize them.
>>>>>>
>>>>>> c. Working group meeting: review scope of work to upgrade 19775-2 SAI
>>>>>> to X3D 4.0. Soon, within a month.
>>>>>>
>>>>>> d. Specification editors meeting, Myeong Don Dick: latest versions of
>>>>>> documents in github. We will try to meet next week if that works for Dick.
>>>>>>
>>>>>> e. Codebase generation meeting: when one or more volunteers are ready
>>>>>> to help with review, we can then discuss.
>>>>>>
>>>>>> Have fun with X3D using C, C++, C# !! 8)
>>>>>>
>>>>>> Yours truly, Myeong and Don
>>>>>>
>>>>>>
>>>>>> On 8/11/2020 7:01 AM, Don Brutzman wrote:
>>>>>> > John, thanks for posting.  There are a number of steps still to go,
>>>>>> here is more information.
>>>>>> >
>>>>>> > a. We currently 2/3 complete in our virtual 3-week-long annual
>>>>>> meeting for ISO Standards Committee 24.  Ordinarily this is a dedicated
>>>>>> 1-week face-to-face meeting, it is quite involved.
>>>>>> >
>>>>>> > b. Dr. Myeong Won Lee of Suwon University has provided an update to
>>>>>> the C/C++/C# language bindings for X3D that were first proposed two years
>>>>>> ago.
>>>>>> >
>>>>>> > [1]    Web3D Consortium Members are now considering C, C++ and C#
>>>>>> language bindings for
>>>>>> >     #X3D Graphics International Standard. Member value continues to
>>>>>> grow, early adopters are advised to join!
>>>>>> >     All community feedback is welcome too.
>>>>>> >     https://twitter.com/Web3DConsortium/status/984257256270135296
>>>>>> >
>>>>>> > c. The Scene Access Interface (SAI) language bindings are strictly
>>>>>> defined by X3D specifications.  No proprietary technology or
>>>>>> external-library dependencies are required.
>>>>>> >
>>>>>> > [2]    Web3D Recommended Standards
>>>>>> >     https://www.web3d.org/standards
>>>>>> >
>>>>>> > d. We have captured all X3D scene-graph structure and typing in the
>>>>>> X3D Unified Object Model (X3DUOM).
>>>>>> >
>>>>>> > [3]    X3D Unified Object Model (X3DUOM)
>>>>>> >     https://www.web3d.org/specifications/X3DUOM.html
>>>>>> >
>>>>>> > e. We have achieved autogeneration from X3DUOM to open-source
>>>>>> implementations that support SAI for Java, Python and Turtle.  This occurs
>>>>>> through careful consideration of design patterns to hold strictly designed
>>>>>> data structures.  This does not include any form of rendering or
>>>>>> platform-specific adaptations.
>>>>>> >
>>>>>> > [4]    X3D Graphics Standards Relationships
>>>>>> >
>>>>>> https://www.web3d.org/specifications/X3dSpecificationRelationships.png
>>>>>> >
>>>>>> > f. A major benefit of autogeneration is that everything is exactly
>>>>>> correct and can always track X3D4 refinements.
>>>>>> >
>>>>>> > g. As you know, we hope to repeat this pattern for JavaScript.
>>>>>> Your experience with X3DJSONLD and JavaScript means that an autogenerated
>>>>>> implementation oriented to Node.js is appealing.
>>>>>> >
>>>>>> > h. Once implementations are stable, we will have to write
>>>>>> corresponding X3D SAI specifications to match, likely next spring.
>>>>>> >
>>>>>> > i. Professor Lee has also produced an example code library that
>>>>>> should serve as a good basis for design templates.
>>>>>> >
>>>>>> > j. We hope to begin tackling this new task after SIGGRAPH.
>>>>>> >
>>>>>> > k. Since an unavoidable FAQ will be "How are the C/C++/C#
>>>>>> implementations and specifications similar, and how are they different?"
>>>>>> the X3D working group currently plans to work all three in tandem and
>>>>>> submit all three specifications simultaneously.  This approach will
>>>>>> maximize consistency and best-of-breed design patterns.
>>>>>> >
>>>>>> > l. Clearly we will need multiple X3D experts who are each familiar
>>>>>> with C, C++ and C# in order to achieve our goals of useful reusable
>>>>>> open-source libraries and specifications.
>>>>>> >
>>>>>> > m. This is not a debate about programming styles or preferences,
>>>>>> rather how do we produce the most platform-neutral APIs that are widely
>>>>>> reusable.
>>>>>> >
>>>>>> > n. Resulting codebases will be hooked up to regression testing of
>>>>>> the X3D Examples Archives.
>>>>>> >
>>>>>> > [5]    X3D Resources, Examples: Scene Archives for X3D
>>>>>> >
>>>>>> https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples
>>>>>> >
>>>>>> > o. Success is measured by how these libraries encourage adoption of
>>>>>> X3D by C/C++/C# applications, either open source or commercial. Original
>>>>>> announcement follows.
>>>>>> >
>>>>>> > [6]    [x3d] X3D C and C++ language bindings NWIPs [corrected copy]
>>>>>> >
>>>>>> http://web3d.org/pipermail/x3d-public_web3d.org/2018-April/008598.html
>>>>>> >
>>>>>> > p. I'll be sending out an annual Web3D ISO liaison report to Web3D
>>>>>> Consortium members in another week, once the SC24 meeting is complete.
>>>>>> This report will get released publicly sometime afterwards.
>>>>>> >
>>>>>> > q. So the answer to most of your questions below is "same as
>>>>>> before" with Java, Python, Turtle.
>>>>>> >
>>>>>> > Hope this makes sense.  These are new big projects, adapting and
>>>>>> repeating capabilities that we have already demonstrated three times.
>>>>>> >
>>>>>> > Worthy mountains to climb that make X3D ever-more available.
>>>>>> Usually this is where business plans add a sentence saying, approximately,
>>>>>> "total world domination to follow."  8)
>>>>>> >
>>>>>> > Thanks everyone for considering the possibilities.  Have fun with
>>>>>> X3D4!  8)
>>>>>> >
>>>>>> >
>>>>>> > On 8/10/2020 5:10 PM, John Carlson wrote:
>>>>>> >>
>>>>>> >> We're looking for some programmers to contribute to a project
>>>>>> creating X3DCSAIL, a C/C++/C# version of X3DJSAIL.
>>>>>> >>
>>>>>> >> My question is, how will X3DCSAIL be different from OpenInventor
>>>>>> or Coin3D or FreeWRL?  Can these run headless?   Can we adapt one of these
>>>>>> to run headless?  It looks like OpenInventor has a headless mode, but I'm
>>>>>> not sure about the others.
>>>>>> >>
>>>>>> >> How might we pursue this library?  What are the requirements?  Who
>>>>>> are the customers?   Should we just create examples, and adopt one of the
>>>>>> existing open source X3D browser implementations?  Is there a website
>>>>>> describing the goals of this project?  Should I create one?
>>>>>> >>
>>>>>> >> I have something written in C++ that reads in X3D JSON and writes
>>>>>> out X3D XML, but that's pretty much a prototype at this stage--works with a
>>>>>> couple of cases.  This opens up C++ X3D browser to the X3D JSON
>>>>>> capabilities similar to how X3DJSONLD transformed X_ITE and X3DOM.
>>>>>> >>
>>>>>> >> The cplusplus version in in <X3DJSONLD>/src/main/cplusplus/src
>>>>>> >>
>>>>>> >> More testing is welcome!
>>>>>> >>
>>>>>> >> We currently do not have a X3dToC.xslt, but would appreciate
>>>>>> examples of C++ code that people would like to develop to use X3DCSAIL, so
>>>>>> we can pattern the appropriate stylesheet for the X3DCSAIL library.
>>>>>> >>
>>>>>> >> O can provide a C++ Serializer that will convert a DOM document to
>>>>>> C++ using JavaScript code, but  I'm also wondering what kind of target I
>>>>>> should hit, similar to what we might do with a stylesheet.
>>>>>> >>
>>>>>> >> So we're just looking for C++ test cases at this point.
>>>>>>
>>>>>> 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
>>>>>> http://faculty.nps.edu/brutzman
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Myeong Won Lee, PhD, Professor
>>>>>
>>>>>
>>>>> Faculty of Computer Science, U. of Suwon
>>>>>
>>>>>
>>>>> Hwaseong, Gyeonggi-do, 18323 Korea
>>>>> E-mail) myeongwonlee at gmail.com, mwlee at suwon.ac.kr
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> --
>>>
>>> Myeong Won Lee, PhD, Professor
>>>
>>>
>>> Faculty of Computer Science, U. of Suwon
>>>
>>>
>>> Hwaseong, Gyeonggi-do, 18323 Korea
>>> E-mail) myeongwonlee at gmail.com, mwlee at suwon.ac.kr
>>>
>>>
>>>
>>
>>
>
> --
>
> Myeong Won Lee, PhD, Professor
>
>
> Faculty of Computer Science, U. of Suwon
>
>
> Hwaseong, Gyeonggi-do, 18323 Korea
> E-mail) myeongwonlee at gmail.com, mwlee at suwon.ac.kr
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200907/aea78177/attachment-0001.html>


More information about the x3d-public mailing list