[x3d-public] ... X3D4 PBR Material textures: all [X3DSingleTextureNode] vice some [X3DTexture2DNode] ?

Don Brutzman brutzman at nps.edu
Sat Sep 26 21:36:53 PDT 2020


On 9/26/2020 6:18 AM, Michalis Kamburelis wrote:
> 
> Yes to "use X3DSingleTextureNode throughout".

OK, but just need to again check: do we actually want the more-specific [X3DTexture2DNode] instead for the Material/PhysicalMaterial/UnlitMaterial texture fields?

I think it is good to keep all those texture fields consistent with the same node type.  Your logic below regarding repeatS/repeatT/textureProperties also seems sensible.

However am having some difficulty understanding why someone might want to modulate the various texture fields using any of these nodes:

- X3DEnvironmentTextureNode (ComposedCubeMapTexture, GeneratedCubeMapTexture, ImageCubeMapTexture)
- X3DTexture3DNode          (ComposedTexture3D,ImageTexture3D,PixelTexture3D)

Am willing to agree with what you said, mathematically seems OK so why not.  Meanwhile still wondering conceptually about modifying *Material nodes with CubeMap or Texture3D nodes: why, what use case, what might it look like?

Thanks for any rationale.

Specification excerpts follow, first showing the two interfaces found in X3D version 4, then showing the node hierarchy.

=====================================================

X3D version 4, 18.3.2 X3DSingleTextureNode
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-WD2/Part01/components/texturing.html#X3DSingleTextureNode

X3DSingleTextureNode : X3DTextureNode {
   SFNode [in,out] metadata NULL [X3DMetadataObject]
}
=====================================================

X3D version 4, 18.3.4 X3DTexture2DNode

X3DTexture2DNode : X3DSingleTextureNode {
   SFNode [in,out] metadata          NULL [X3DMetadataObject]
   SFBool []       repeatS           TRUE
   SFBool []       repeatT           TRUE
   SFNode []       textureProperties NULL [TextureProperties]
}
=====================================================

X3D version 4, 4.4.2.3 Interface hierarchy
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-WD2/Part01/concepts.html#InterfaceHierarchy

         |                          +- X3DTextureNode -+- MultiTexture
         |                          |                  |
         |                          |                  + X3DSingleTextureNode -+- X3DEnvironmentTextureNode -+- ComposedCubeMapTexture
         |                          |                                          |                             +- GeneratedCubeMapTexture
         |                          |                                          |                             +- ImageCubeMapTexture (X3DUrlObject)*
         |                          |                                          |
         |                          |                                          +- X3DTexture2DNode -+- ImageTexture (X3DUrlObject)*
         |                          |                                          |                    +- MovieTexture (X3DSoundSourceNode, X3DUrlObject)*
         |                          |                                          |                    +- PixelTexture
         |                          |                                          |
         |                          |                                          +- X3DTexture3DNode -+- ComposedTexture3D
         |                          |                                                               +- ImageTexture3D (X3DUrlObject)*
         |                          |                                                               +- PixelTexture3D
=====================================================


> I deliberately wanted to use the "only 2D" texture type for
> normalTexture and occlusionTexture in X3D 4.0 (to make X3D
> implementations easier). But I don't think anymore it's necessary. If
> no X3D browser developer will object here, I'm cool with using (more
> general) X3DSingleTextureNode type for them
> 
> While 3D textures with normals, or cubemaps with normals, are not
> common -> but they make sense, we should allow them.
> 
> Note that your comment about repeatS repeatT or textureProperties is not valid.
> 
> - We absolutely *want* to have repeatS, repeatT, textureProperties for
> the 2D textures used with materials. And we will: since
> X3DSingleTextureNode is the ancestor of X3DTexture2DNode. So changing
> these fields (normalTexture and occlusionTexture) to
> X3DSingleTextureNode is only adding more possibilities, not taking
> away any. You can still place there "ImageTexture" and configure its
> repeatXxx field.
> 
> - Other (non-2D) textures also have analogous fields, most texture
> nodes should have textureProperties, 3D texture nodes have repeatS/T/U
> etc. And that's all good :)
> 
> - These all properties make sense on textures. Placing textures inside
> a material doesn't change anything here, it still makes sense to talk
> about texture repeat, filtering etc.
> 
> Regards,
> Michalis
> 
> sob., 26 wrz 2020 o 00:54 Don Brutzman <brutzman at nps.edu> napisał(a):
>>
>> Found a small inconsistency in X3D4 WD2 spec (while implementing the rest of "mapping" approach in X3D Schema and X3DUOM).
>>
>> Please look at node types in following, specifically [X3DSingleTextureNode] vs. [X3DTexture2DNode].
>>
>> =======================================
>> 12.4.5 Material
>>
>> Material : X3DOneSidedMaterialNode {
>>     SFFloat  [in,out] ambientIntensity          0.2          [0,1]
>>     SFNode   [in,out] ambientTexture            NULL         [X3DSingleTextureNode]
>>     SFString [in,out] ambientTextureMapping     ""
>>
>>     SFColor  [in,out] diffuseColor              0.8 0.8 0.8  [0,1]
>>     SFNode   [in,out] diffuseTexture            NULL         [X3DSingleTextureNode]
>>     SFString [in,out] diffuseTextureMapping     ""
>>
>>     SFColor  [in,out] emissiveColor             0 0 0        [0,1]
>>     SFNode   [in,out] emissiveTexture           NULL         [X3DSingleTextureNode]
>>     SFString [in,out] emissiveTextureMapping    ""
>>
>>     SFNode   [in,out] metadata                  NULL         [X3DMetadataObject]
>>
>>     SFNode   [in,out] normalTexture             NULL         [X3DTexture2DNode]
>>     SFString [in,out] normalTextureMapping      ""
>>     SFFloat  [in,out] normalScale               1            [0, ∞]
>>
>>     SFFloat  [in,out] occlusionStrength         1            [0,1]
>>     SFNode   [in,out] occlusionTexture          NULL         [X3DTexture2DNode]
>>     SFString [in,out] occlusionTextureMapping   ""
>>
>>     SFFloat  [in,out] shininess                 0.2          [0,1]
>>     SFNode   [in,out] shininessTexture          NULL         [X3DSingleTextureNode]
>>     SFString [in,out] shininessTextureMapping   ""
>>
>>     SFColor  [in,out] specularColor             0 0 0        [0,1]
>>     SFNode   [in,out] specularTexture           NULL         [X3DSingleTextureNode]
>>     SFString [in,out] specularTextureMapping    ""
>>
>>     SFFloat  [in,out] transparency              0            [0,1]
>> }
>> =======================================
>>
>> 18.3.2 X3DSingleTextureNode
>>
>> X3DSingleTextureNode : X3DTextureNode {
>>     SFNode [in,out] metadata NULL [X3DMetadataObject]
>> }
>> =======================================
>>
>> 18.3.4 X3DTexture2DNode
>>
>> X3DTexture2DNode : X3DSingleTextureNode {
>>     SFNode [in,out] metadata          NULL [X3DMetadataObject]
>>     SFBool []       repeatS           TRUE
>>     SFBool []       repeatT           TRUE
>>     SFNode []       textureProperties NULL [TextureProperties]
>> }
>> =======================================
>>
>> Looks like node type for every SFNode texture field in the new Material nodes should be [X3DSingleTextureNode] rather than any as [X3DTexture2DNode].  Doubtful we'd ever want to rely on repeatS repeatT or textureProperties when modulating materials.
>>
>> OK to use [X3DSingleTextureNode] throughout?

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



More information about the x3d-public mailing list