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

John Carlson yottzumm at gmail.com
Thu Sep 3 18:56:19 PDT 2020


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200903/38a40849/attachment-0001.html>


More information about the x3d-public mailing list