<div dir="ltr"><div>Yes, there is some relation to the 
DICOM Multi-Planar Reconstruction, they are referring to the same thing. But the proposed style is somewhat more limited and simpler than the DICOM specification.</div><div><br></div><div>Some public live examples of the new proposals:</div><div><br></div><div><b>MPRVolumeStyle</b> node: <a href="https://sunrise-lunge.glitch.me">https://sunrise-lunge.glitch.me</a></div><div><b>allowViewPointInside </b>attribute: <a href="https://mountain-verse.glitch.me">https://mountain-verse.glitch.me</a></div><div><br></div><div>I could join at both Fridays.</div><div><br></div><div>BR,<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El mié., 12 jun. 2019 a las 16:45, Brutzman, Donald (Don) (CIV) (<<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ander, thank you very much.<br>
<br>
This is now added to X3Dv4 Implementations page.  Please review the process summary which appears there.<br>
<a href="https://www.web3d.org/x3dv4-implementations" rel="noreferrer" target="_blank">https://www.web3d.org/x3dv4-implementations</a><br>
<br>
If you and Nicholas can join X3D Working Group teleconference this Friday (08-0930 pacific) to present and discuss, that would be great.  Following Friday is also OK We are just now transitioning to Zoom to permit screen sharing and chat, that link will be forthcoming.<br>
<br>
Wondering if there is any relation to DICOM Multi-Planar Reconstruction Geometry Module?<br>
<a href="ftp://dicom.nema.org/MEDICAL/dicom/2016a/output/chtml/part03/sect_C.11.26.html" rel="noreferrer" target="_blank">ftp://dicom.nema.org/MEDICAL/dicom/2016a/output/chtml/part03/sect_C.11.26.html</a><br>
<br>
Thanks for your important efforts.<br>
<br>
On 6/12/2019 2:18 AM, Ander Arbelaiz wrote:<br>
> Dear X3D WG members,<br>
> <br>
> I would like to propose a series of extensions/additions to the X3D Volume Rendering Component.<br>
> <br>
> These extensions were first presented on the Web3D2017 conference.<br>
> Community-driven Extensions to the X3D Volume Rendering Component <<a href="https://www.researchgate.net/publication/317122169_Community-driven_extensions_to_the_X3D_volume_rendering_component" rel="noreferrer" target="_blank">https://www.researchgate.net/publication/317122169_Community-driven_extensions_to_the_X3D_volume_rendering_component</a>>(full PDF copy available)<br>
> <br>
> On this paper the following additions were proposed:<br>
> <br>
> 1. New Proposed Nodes:<br>
> 1.1 ImageTextureAtlas node<br>
> 1.2 MPRVolumeStyle node<br>
> <br>
> 2. New Proposed Additions:<br>
> 2.1 quality attribute to target device computation capabilities<br>
> 2.2 allowViewpointInside attribute for inside exploration of volume data<br>
> 2.3 sceneDepth attribute for hybrid rendering<br>
> 2.4 cap attribute for Clipping<br>
> <br>
> So far, from those proposals I have already contribute in the X3DOM library with the following:<br>
> <br>
> *1.1 ImageTextureAtlas node<br>
> *<br>
> *1.2 MPRVolumeStyle*<br>
> *2.2 allowViewpointInside attribute for inside exploration of volume data*<br>
> <br>
> Therefore, I think these additions (1,1, 1.2, 2.2) can be discussed for inclusion in future revisions of the X3D standard.<br>
> <br>
> I will prepare some public live examples as soon as I can, and will post them in the mailing list.<br>
> <br>
> I understand a more formal spec definition will be required. @Don Brutzman <mailto:<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> @Nicholas Polys <mailto:<a href="mailto:npolys@vt.edu" target="_blank">npolys@vt.edu</a>>,  any help and guidance on this regard will be appreciated. When required I could present/discuss these extensions on any next X3D WG meeting.<br>
> <br>
> An initial description of these extensions is at the end of this post.<br>
> <br>
> BR,<br>
> <br>
> <br>
> <br>
>     1.1 ImageTextureAtlas node<br>
> <br>
> Volumetric data, specially those obtained from a MRI or a CT scan, can be seen as a set of 2D image slices in an array. This data is usually stored in a 3D Texture. Unfortunately, in the web context, WebGL 1.0 does not support 3D texture data types. X3DTexture3DNode derived nodes can not be implemented with this API. An alternative structure is required for compatibility with the web.<br>
> <br>
> We propose a new ImageTextureAtlas node which allows to represent the 3D volume data by composing all the 2D slices into a single 2D texture. Instead of adding a Z dimension to the texture, all 2D slices are arranged in a matrix configuration into one image.<br>
> <br>
> Listing below shows the basic X3D definition of the proposed node.<br>
> <br>
> ImageTextureAtlas : X3DTexture2DNode<br>
> <br>
> SFNode [in,out] metadata NULL [X3DMetadataObject]<br>
> <br>
> SFBool [in,out] repeatS TRUE<br>
> <br>
> SFBool [in,out] repeatT TRUE<br>
> <br>
> SFNode [in,out] textureProperties NULL [TextureProperties]<br>
> <br>
> MFString [in,out] url [] [URI]<br>
> <br>
> SFInt32 [in,out] numberOfSlices 0 [0,∞)<br>
> <br>
> SFInt32 [in,out] slicesOverX 0 [0,∞)<br>
> <br>
> SFInt32 [in,out] slicesOverY 0 [0,∞)<br>
> <br>
> SFBool [in,out] hideChildren TRUE<br>
> <br>
> SFString [in,out] channels "R"<br>
> <br>
> SFString [in,out] sortOrder "NONE" ["ROW", "CHANNEL", “NONE”]<br>
> <br>
> }<br>
> <br>
> <br>
> The following attributes are inherited by X3DTexture2DNode: metadata, repeatS, repeatT, textureProperties and url.<br>
> <br>
> The numberOfSlices attribute indicates the number of slices or the dimension in Z axis. SlicesOverX attribute indicates the number of slices along X axis or columns, while the SlicesOverY indicates the number of slices along Y axis or number of rows in the matrix configuration. This values must be provided by the user, since they cannot be deduced by the input image.<br>
> <br>
> The channels field defines in which color channel of the texture volume data is being stored. The default behavior is to store the volume data in the Red color channel by specifying the "R" value. When, a larger volume is required to be converted into an ImageTextureAtlas additional channels can be specified with "R", "G", "B", "A" characters. For instance, to store up to three times more data. A "RGBA" value in the channel field will indicate that all color channels of the texture are being used to store the data.<br>
> <br>
> Once multiple color channels are defined, the order in which 2D slices are tiled into the atlas must be set in the sortOrder field. The default behavior is to tile the 2D slices that represent the Z axis of the volume data in "ROW” (row-major) order. For each slice of the ImageTextureAtlas the next slice in the Z axis is the contiguous slice in the row of the matrix of slices. When the sortOrder is set to "CHANNEL" the next slice of the atlas in the Z axis direction is stored in the the contiguous color channel.<br>
> <br>
> A 2D image representing an ImageTextureAtlas of the MRI ventricles (Volvis)dataset (color inverted and contrast enhanced) as a set of 2D slices tiled into a matrix configuration<br>
> <br>
> <br>
> Not only to represent raw volume data, the ImageTextureAtlas can also be used for gradient volume data and segmented volume data.<br>
> <br>
> Surface normals are specified to be provided as an additional 3D texture. Using the same approach as before, we can create an ImageTextureAtlas using the color channels of the 2D texture to store the vector information of gradient data. We encode the gradient vector for each pixel in the atlas in the RGB color channels {R: X, G: Y, B: Z}.<br>
> <br>
> Listing below shows an example declaration of the gradient data.<br>
> <br>
> <ImageTextureAtlas containerField="surfaceNormals" url="gradient.png" slicesOverX="8" slicesOverY="8" channels=”RGB” sortOrger=”NONE”> </ImageTextureAtlas><br>
> <br>
> <br>
> The containerField and URL attributes are the only modifications required for the ImageTextureAtlas declaration. The containerField attribute is used to target the volume data voxels field in a X3DVolumeDataNode or gradient data surfaceNormals field in a X3DVolumeStyleNode. This also requires, for the X3DVolumeStyleNode type nodes with a surfaceNormals attribute, to accept a X3DTexture2DNode as an input argument.<br>
> <br>
> The following Listing definition shows how X3DVolumeData derived nodes, such as the VolumeData, should allow a 2D texture input to accept the ImageTextureAtlas as a parameter.<br>
> <br>
> VolumeData : X3DVolumeDataNode {<br>
> <br>
> SFVec3f [in,out] dimensions 1 1 1 (0,∞)<br>
> <br>
> SFNode [in,out] metadata NULL [X3DMetadataObject]<br>
> <br>
> SFNode [in,out] renderStyle NULL [X3DVolumeRenderStyleNode]<br>
> <br>
> SFNode [in,out] voxels NULL [X3DTexture3DNode, X3DTexture2DNode]<br>
> <br>
> SFVec3f [] bboxCenter 0 0 0 (-∞,∞)<br>
> <br>
> SFVec3f [] bboxSize -1 -1 -1 [0,∞) or -1 -1 -1<br>
> <br>
> }<br>
> <br>
> <br>
> The SegmentedVolumeData node allows the user to discern regions of the volume and apply different rendering styles to each one. The segmented region must be labeled per voxel.<br>
> <br>
> Textures provide a mechanism to input data to the GPU, updating directly the visualization. In the Web platform we can take advantage of the 2D canvas API to create or modify images that can be copied to the GPU. This is of special interest to reflect dynamic changes in the data and, for instance, to perform the construction of the atlas in the browser.<br>
> <br>
> Listing below shows an ImageTextureAtlas node declaration with a canvas. The hideChildren attribute hides the atlas image visibility from the user, but makes it available to be modified with JavaScript.<br>
> <br>
> <ImageTextureAtlas containerField="voxels" url="" slicesOverX="8" slicesOverY="8" hideChildren="true"><br>
> <br>
>   <canvas id="v" style="width:2048px; height:2048px;"><br>
> <br>
>   </canvas><br>
> <br>
> </ImageTextureAtlas><br>
> <br>
> <br>
>     1.2 MPRVolumeStyle node<br>
> <br>
> The Multi-Planar Reconstruction (MPR) is a wide spread rendering technique. Essentially, it enables the user to define arbitrary planes slicing through the volume data. The rendering algorithm resamples the volume data to reconstruct the desired plane. Usually, the following planes are defined: Axial, Sagital, Coronal and Oblique.<br>
> <br>
> The following Listing shows the proposed X3D MPR volume rendering style definition.<br>
> <br>
> MPRVolumeStyle : X3DVolumeRenderStyleNode  {<br>
> <br>
> SFBool [in,out] enabled TRUE<br>
> <br>
> SFNode [in,out] metadata NULL [X3DMetadataObject]<br>
> <br>
> SFNode [in,out] transferFunction NULL [X3DTexture2DNode, X3DTexture3DNode]<br>
> <br>
> SFBool [in,out] forceOpaque TRUE<br>
> <br>
> MFNode [in,out] planes NULL [MPRPlane]<br>
> <br>
> }<br>
> <br>
> <br>
> An additional interesting enhancement to MPR is the ability to add a transfer function (TF) in order to illustrate or filter regions in the reconstructed planes. It is used to correlate the visual output with obtained results. The proposed MPR node defines a /transferFunction /attribute with the same functionality as the one already defined in the OpacityMapVolumeStyle. This node also defines a planes attribute to allow the user to declare arbitrary planes.<br>
> <br>
> The following Listing presents an arbitrary plane definition for the MPRVolumeStyle node. The /normal /attribute defines the normal vector of the plane, while the /position /attribute establishes the position of the plane from the origin of the volume in the normal direction.<br>
> <br>
> MPRPlane : X3DNode {<br>
> <br>
> SFBool [in,out] enabled TRUE<br>
> <br>
> SFNode [in,out] metadata NULL [X3DMetadataObject]<br>
> <br>
> SFVec3 [in,out] normal 0 0 1<br>
> <br>
> SFFloat [in,out] position 0.0 [0,1]<br>
> <br>
> }<br>
> <br>
> <br>
>     2.2 allowViewpointInside attribute for inside exploration<br>
> <br>
> Allowing to place the viewers virtual camera inside the volume provides a new perspective to analyze the data. Some regions of the volume data can be occluded even after filtering the data with a transfer function (TF). We suggest to define a new attribute to enable or disable this behavior for performance purposes.<br>
> <br>
> The following Listing shows the definition with the proposed attribute.<br>
> <br>
> X3DVolumeDataNode : X3DChildNode, X3DBoundedObject<br>
> <br>
> SFVec3f [in,out] dimensions 1 1 1 (0,∞)<br>
> <br>
> SFNode [in,out] metadata NULL [X3DMetadataObject]<br>
> <br>
> SFVec3f [] bboxCenter  0 0 0 (-∞,∞)<br>
> <br>
> SFVec3f [] bboxSize -1 -1 -1 [0,∞) or -1 -1 -1<br>
> <br>
> SFBool [in,out] allowViewPointInside TRUE<br>
> <br>
> }<br>
> <br>
> <br>
> Our proposal is to declare a new boolean attribute allowViewPointInside to all nodes inherited by the X3DVolumeDataNode. By default we suggest to allow the inspection of the volume data and if the user does not require to do so, it can be explicitly disabled. This feature allows to avoid additional computation.<br>
> <br>
> -- <br>
> <<a href="http://www.vicomtech.org" rel="noreferrer" target="_blank">http://www.vicomtech.org</a>><br>
> Ander Arbelaiz Aranzasti<br>
> Researcher | Investigador<br>
> <br>
> <a href="mailto:aarbelaiz@vicomtech.org" target="_blank">aarbelaiz@vicomtech.org</a> <mailto:<a href="mailto:aarbelaiz@vicomtech.org" target="_blank">aarbelaiz@vicomtech.org</a>><br>
> +[34] 943 30 92 30Industry and Advanced Manufacturing | Industria y Fabricación Avanzada<br>
> <br>
> <<a href="https://www.linkedin.com/company/vicomtech" rel="noreferrer" target="_blank">https://www.linkedin.com/company/vicomtech</a>> <<a href="https://www.youtube.com/user/VICOMTech" rel="noreferrer" target="_blank">https://www.youtube.com/user/VICOMTech</a>> <<a href="https://twitter.com/@Vicomtech" rel="noreferrer" target="_blank">https://twitter.com/@Vicomtech</a>><br>
> member of: <<a href="http://www.graphicsmedia.net/" rel="noreferrer" target="_blank">http://www.graphicsmedia.net/</a>><br>
> Legal Notice - Privacy policy <<a href="http://www.vicomtech.org/en/proteccion-datos" rel="noreferrer" target="_blank">http://www.vicomtech.org/en/proteccion-datos</a>><br>
<br>
<br>
all the best, Don<br>
-- <br>
Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><br>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<br>
X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman" rel="noreferrer" target="_blank">http://faculty.nps.edu/brutzman</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><a href="http://www.vicomtech.org" target="_blank"><img src="http://www.vicomtech.org/firmas/html/Vicomtech209.png" width="209px" height="50px" border="0"></a><br><span style="font-size:12px;color:black;font-family:CENTURY GOTHIC;font-weight:bold">Ander Arbelaiz Aranzasti</span><br><span style="font-size:12px;color:black;font-family:CENTURY GOTHIC">Researcher | Investigador</span><br><br><span style="font-size:12px;color:black;font-family:CENTURY GOTHIC"><a href="mailto:aarbelaiz@vicomtech.org" style="color:black" target="_blank">aarbelaiz@vicomtech.org</a></span><br><span style="font-size:12px;color:black;font-family:CENTURY GOTHIC">+[34] 943 30 92 30</span><span style="font-size:11px;color:black;font-family:CENTURY GOTHIC">Industry and Advanced Manufacturing | Industria y Fabricación Avanzada</span><br><br><a href="https://www.linkedin.com/company/vicomtech" target="_blank"><img src="http://www.vicomtech.org/firmas/html/linkedinCuadrado.png" longdesc="http://Linkedin" border="0"></a> <a href="https://www.youtube.com/user/VICOMTech" target="_blank"><img src="http://www.vicomtech.org/firmas/html/youtubeCuadrado.png" longdesc="http://YouTube" border="0"></a> <a href="https://twitter.com/@Vicomtech" target="_blank"><img src="http://www.vicomtech.org/firmas/html/twitterCuadrado.png" longdesc="http://Twitter" border="0"></a><br><span style="font-size:12px;color:black;font-family:CENTURY GOTHIC">member of: <a href="http://www.graphicsmedia.net/" target="_blank"><img src="http://www.vicomtech.org/firmas/html/gmn68.png" longdesc="http://GraphicsMediaNet" style="vertical-align: middle;" width="110px" height="38px" border="0"></a></span><br><span style="font-size:10px;color:black;font-family:CENTURY GOTHIC;font-weight:normal;font-style:italic"><a href="http://www.vicomtech.org/en/proteccion-datos" style="color:black" target="_blank">Legal Notice - Privacy policy</a></span></div></div>