[x3d-public] InlineGeometry node and PLY format support in Castle Game Engine
John Carlson
yottzumm at gmail.com
Mon Apr 6 11:00:38 PDT 2026
I agree that the PLYs that I worked with weren’t suitable for X3D. Either
my parser was off, or there were negative color values, negative scales
etc. I thought a second person could look at the same files and make
better progress. I was able to view black points clouds (no clouds) from
the PLY files in castle. I can probably change the property in the PLY
file to achieve color in the point cloud. The point is, I don’t know if
there’s standard PLY color properties.
Thanks,
John
On Mon, Apr 6, 2026 at 12:18 AM Don Brutzman <don.brutzman at gmail.com> wrote:
> Thank you Michalis for implementing the draft InlineGeometry node. Having
> both Castle Game Engine and (already supporting) X_ITE/Playground/Sunrize
> is definitely accelerating our design, implementation and evaluation of
> LOA-5 bone segments for HAnim. Tests of your Castle Model Viewer beta
> release look good on this end.
>
> Repeating a prior reply: "Gaussian Splat PLYs" (whatever that means) does
> not seem like a good use of effort. There is a lot of ongoing
> developmental work on gaussian splat formats by various companies that are
> nonstandard, inconsistent, possibly unstable, and often proprietary. Some
> happen to use .ply as a container. A prudent approach is to wait and see
> what glTF does once things stabilize. Using Inline with glTF 2.0 (in json
> or glb) is already in X3D 4.0, extension support by browsers is optional,
> so that is a reasonable future path if consensus ever emerges.
>
> The draft X3D specification for InlineGeometry describes rationale and
> includes references for the PLY format.
>
> - X3D Architecture 4.1 draft — ISO/IEC 19775-1:202x — 9 Networking
> component
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#InlineGeometry>
> 9.4.3 InlineGeometry
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#InlineGeometry>
> -
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#InlineGeometry9.4.3
> InlineGeometry
>
> InlineGeometry : X3DGeometryNode, X3DUrlObject {
> SFTime [in,out] autoRefresh 0.0 [0,infinity)
> SFTime [in,out] autoRefreshTimeLimit 3600.0 [0,infinity)
> SFString [in,out] description ""
> SFBool [in,out] load TRUE
> SFNode [in,out] metadata NULL [X3DMetadataObject]
> MFString [in,out] url [] [URI]
> }
>
> InlineGeometry loads geometry from an external file. The result
> provides a polygonal mesh, set of lines, point cloud, parametric surface,
> or other geometry.
>
> The *url* field can support loading a variety of file formats defining
> polygonal mesh geometry. When the *url* field contains no values ([]),
> no default geometry is provided. Required Recommended support by X3D
> browsers includes both ASCII and binary encodings for the STL format (see
> STL
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/bibliography.html#STL>)
> as well as the PLY polygonal geometry format (see PLY
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/bibliography.html#PLY>),
> respectively. Other file types can be optionally supported by a browser.
> TODO: consider "required support" of STL/PLY formats rather than
> "recommended support" since numerous open-source conversion implementations
> are available, no IPR considerations pertain, and STL/PLY formats are the
> primary use case.
>
> If the *url* field refers to an X3D file or a VRML97 file, the first
> geometry node found in that file (excluding both prototype declarations and
> prototype instances) is used to provide the InlineGeometry contents. X3D
> browsers shall recognize *url* fields that end with "#*DEFname*" to
> mean the geometry node with DEF label of *DEFname* in the given X3D or
> VRML97 file.
>
> The run-time system can support any number of 3D model resource types
> as long as those follow the available Model Primary Content Type for
> Multipurpose Internet Mail Extensions (MIME) model definition (see
> RFC2077
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#RFC2077>),
> provide a registered content type (e.g., model/stl, text/plain etc.)
> (see IANA_MEDIA
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#IANA_MEDIA>
> and IANA_STL
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#IANA_STL>),
> and can be determined with some form of content negotiation (see
> RFC9110
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#RFC9110>).
> Support is recommended for both text and binary encodings associated with a
> given model format, when so defined.
>
> NOTE Experimental variations of PLY format used for Gaussian Splat
> rendering are not expected for InlineGeometry. Such capabilities are better
> supported by Inline node loading of glTF models.
>
> EXAMPLES
>
> Shape {
> geometry InlineGeometry { url [ "MyFavoriteMesh.stl" ] }
>
> appearance USE FancyPaintAppearance # previously defined
> }
>
> Shape {
> geometry InlineGeometry { url [ "HelloWorld.x3d#TextMessage" ] }
>
> appearance USE FancyPaintAppearance # previously defined
> }
>
> Editors notes.
> - Are better authoritative references possible for STL and PLY? See Mantis
> 1522 <https://mantis.web3d.org/view.php?id=1522>.
> - InlineGeometry results differ from an Inline node, which produces
> an X3DChildNode scene subgraph implementing the X3DBoundedObject interface.
> An Inline node cannot be used as the *geometry* field of a Shape.
> - Results from browser loading may be any kind of polygonal mesh or
> parametric surface (e.g. IndexedFaceSet, TriangleSet, Extrusion, etc.) but
> cannot be further manipulated or animated by events from the scene.
> - Direct loading of such geometry files eliminates the need for
> prior model conversion into X3D, and adds flexibility when applying
> Appearance to the result.
> - The "#*DEFname*" syntax directly matches EXTERNPROTO URL semantics
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/concepts.html#EXTERNPROTOURLSemantics> considerations.
> Not requiring IMPORT/EXPORT statements provides greater backwards
> compatibility with legacy models, avoiding unnecessary complications and
> possible ambiguity.
> - Composition of online addresses and parameter values within a
> *url* field offers the possibility of invoking an online server to
> perform file-format conversions. See email thread [x3d-public]
> Inline > type field > for loading / converting / parsing other content
> <https://web3d.org/pipermail/x3d-public_web3d.org/2026-March/022355.html> for
> further discussion. Such additional functionality supports the use cases
> under consideration by Metaverse Standards Forum (MSF) 3D Web
> Interoperability
> <https://metaverse-standards.org/domain-groups/3d-web-interoperability> Working
> Group.
>
>
> Worth reading: the original PLY definition first defined in 1994 by Greg
> Turk at Stanford University., references above.
>
> - [PLY
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/bibliography.html#PLY>
> ]
> -
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/bibliography.html#PLY
> - Wikipedia, PLY (file format), 26 February 2026.
> https://en.wikipedia.org/wiki/PLY_(file_format)
>
> and
>
> 1. Greg Turk. "The PLY Polygon File Format"
> <https://web.archive.org/web/20161204152348/http://www.dcs.ed.ac.uk/teaching/cs4/www/graphics/Web/ply.html>.
> Archived from the original
> <http://www.dcs.ed.ac.uk/teaching/cs4/www/graphics/Web/ply.html> on
> 2016-12-04.
> 2. Greg Turk. "The PLY Polygon File Format (extended)"
> <https://gamma.cs.unc.edu/POWERPLANT/papers/ply.pdf> (PDF).
>
> and
>
> - PLY - Polygon File Format <https://paulbourke.net/dataformats/ply/>
> https://paulbourke.net/dataformats/ply
>
> Improvements to draft specification, especially with implementation and
> evaluation, are always welcome.
>
> all the best, Don
> --
> X3D Graphics, Maritime Robotics, Distributed Simulation
> Relative Motion Consulting https://RelativeMotion.info
>
>
> On Sun, Apr 5, 2026 at 6:39 PM John Carlson via x3d-public <
> x3d-public at web3d.org> wrote:
>
>> Hi, Michalis, Seeing Gaussian Splat PLYs renderered with humanoid
>> animation would be cool to see. With your expertise in binary formats and
>> binary PLY, probably an easy next step!
>>
>> John
>>
>> On Sun, Apr 5, 2026 at 8:05 PM Michalis Kamburelis via x3d-public <
>> x3d-public at web3d.org> wrote:
>>
>>> With big thanks to Don who provided information and pushed me to
>>> implement it!:)
>>>
>>> 1. We support now InlineGeometry in Castle Game Engine and Castle Model
>>> Viewer.
>>>
>>> - I tested on a few examples, and made our own:
>>> https://github.com/castle-engine/demo-models/tree/master/x3d/inline_geometry
>>>
>>> - You can refer to a geometry from any model format we support,
>>> including X3D, glTF, STL, PLY...: https://castle-engine.io/model_formats
>>>
>>> 2. We support now loading models in a PLY format.
>>>
>>> - ASCII and binary versions.
>>>
>>> - Faces or without faces (point cloud, i.e. just our PointSet).
>>>
>>> - Testcases include
>>> https://github.com/castle-engine/demo-models/tree/master/ply and
>>> https://sketchfab.com/3d-models/kaktus-ply-7b7cc7188f17468595506500e186a9c0
>>> .
>>>
>>> More information and screenshots about both features in our news post on
>>> https://castle-engine.io/wp/2026/04/06/support-for-ply-model-format-and-inlinegeometry-node/
>>> .
>>>
>>> They are available to test right now if you download
>>> - the "snapshot" version of Castle Model Viewer
>>> https://castle-engine.io/castle-model-viewer
>>> - or full engine from https://castle-engine.io/download .
>>>
>>> Regards,
>>> Michalis
>>>
>>> _______________________________________________
>>> x3d-public mailing list
>>> x3d-public at web3d.org
>>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20260406/babe78bb/attachment-0001.html>
More information about the x3d-public
mailing list