1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
|
3 | <X3D profile='Immersive' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'> |
4 | <head> |
5 | <component level='4' name='NURBS'/> |
6 | <meta name='title' content='NurbsPrototypes.x3d'/> |
7 | <meta name='description' content='Non-Uniform Rational B-Spline (NURBS) prototype definitions.'/> |
8 | <meta name='creator' content='Original blaxxun definitions heavily modified, X3D specification revisions by Don Brutzman, Charles Adams, Jeffrey Weekley and Alan Shaffer NPS.'/> |
9 | <meta name='translator' content='Don Brutzman'/> |
10 | <meta name='created' content='1 January 2000'/> |
11 | <meta name='translated' content='18 March 2002'/> |
12 | <meta name='modified' content='20 October 2019'/> |
13 | <meta name=' warning ' content=' Under development for final version of X3D NURBS nodes '/> |
14 | <meta name=' warning ' content=' Not all NURBS nodes are prototyped here, and these implementations are not yet fully demonstrated. '/> |
15 | <meta name='reference' content='https://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/nurbs.html'/> |
16 | <meta name='reference' content='http://www.blaxxun.com/vrml/protos/nurbs.wrl'/> |
17 | <meta name='reference' content='NurbsPrototypesOriginal.x3d.txt'/> |
18 | <meta name='reference' content='javadoc/index.html'/> |
19 | <meta name='subject' content='NURBS Prototypes'/> |
20 | <meta name='identifier' content='https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsPrototypes.x3d'/> |
21 | <meta name='generator' content='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html'/> |
22 | <meta name='generator' content='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/> |
23 | <meta name='license' content='../../license.html'/> |
24 | </head> |
25 | <Scene> |
26 | <WorldInfo title='NurbsPrototypes.x3d'/> |
27 | <ProtoDeclare name='Contour2D' appinfo='Contour2D groups a set of curve segments to a composite contour Children segments form a closed loop with first point of first child repeated as last point of last child and last point of segment repeated as first point of consecutive segment Children segments are type NurbsCurve2D or Polyline2D enumerated in consecutive order of contour topology.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#Contour2D'> |
28 | <ProtoInterface> |
29 |
<field name='addChildren' type='MFNode' accessType='inputOnly'
appinfo='[NurbsCurve|ContourPolyline2D]'/> |
30 |
<field name='removeChildren' type='MFNode' accessType='inputOnly'
appinfo='[NurbsCurve|ContourPolyline2D]'/> |
31 |
<field name='children' type='MFNode' accessType='initializeOnly'
appinfo='[NurbsCurve|ContourPolyline2D]'> |
32 | <!-- default is empty node array --> |
33 | </field> |
34 | <field name='set_children' type='MFNode' accessType='inputOnly'/> |
35 | <field name='children_changed' type='MFNode' accessType='outputOnly'/> |
36 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
37 | <!-- Specification initialization: NULL node --> |
38 | </field> |
39 | </ProtoInterface> |
40 | <ProtoBody> |
41 | <Group DEF='Contour2DGroup'> |
42 | <IS> |
43 | <connect nodeField='addChildren' protoField='addChildren'/> |
44 | <connect nodeField='removeChildren' protoField='removeChildren'/> |
45 | <connect nodeField='children' protoField='children'/> |
46 | <connect nodeField='set_children' protoField='set_children'/> |
47 | <connect nodeField='children_changed' protoField='children_changed'/> |
48 | </IS> |
49 | </Group> |
50 | <!-- consider adding a Script here to check that the children nodes are solely of type NurbsCurve2D and/or ContourPolyline2D --> |
51 | </ProtoBody> |
52 | </ProtoDeclare> |
53 | <ProtoDeclare name='ContourPolyline2D' appinfo='ContourPolyline2D defines a linear curve segment as part of a trimming contour in u-v domain of a surface.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#ContourPolyline2D'> |
54 | <ProtoInterface> |
55 | <field name='point' type='MFVec2f' accessType='initializeOnly'> |
56 | <!-- Specification definition: MFVec2f [in,out] point [] (-∞,∞) but we cannot match accessType inputOutput since there is no VRML 97 field that is MFVec2f [in,out]. Hence a known limitation. --> |
57 | </field> |
58 | <field name='set_point' type='MFVec2f' accessType='inputOnly'/> |
59 | <field name='point_changed' type='MFVec2f' accessType='outputOnly'/> |
60 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
61 | <!-- Specification initialization: NULL node --> |
62 | </field> |
63 | </ProtoInterface> |
64 | <ProtoBody> |
65 | <!-- Typical initial approach: group all body nodes together, since rendering is only affected by first Prototype child. Then, map interface field(s) to dummy-node field(s) so that a Script can USE and then manipulate them. --> |
66 | <Group DEF='ContourPolyline2DGroup'> |
67 | <Switch DEF='HideDummy' whichChoice='-1'> |
68 | <Shape> |
69 |
<!-- Extrusion
PointHolder is a DEF node that has 1 USE node: USE_1 -->
<Extrusion DEF='PointHolder'> |
70 | <IS> |
71 | <connect nodeField='crossSection' protoField='point'/> |
72 | </IS> |
73 | </Extrusion> |
74 | </Shape> |
75 | </Switch> |
76 | <Script DEF='ScriptContourPolyline2D-missingBody' directOutput='true'> |
77 | <field name='PointHolder' type='SFNode' accessType='initializeOnly'> |
78 | <Extrusion USE='PointHolder'/> |
79 | </field> |
80 | </Script> |
81 | </Group> |
82 | </ProtoBody> |
83 | </ProtoDeclare> |
84 | <ProtoDeclare name='CoordinateDouble' appinfo='CoordinateDouble builds geometry using a set of 3D coordinates. CoordinateDouble is used by IndexedFaceSet IndexedLineSet LineSet and PointSet. CoordinateDouble is also used by NurbsPositionInterpolator and NurbsOrientationInterpolator.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#CoordinateDouble'> |
85 | <ProtoInterface> |
86 |
<field name='point' type='MFVec3f' accessType='initializeOnly'
appinfo='Substitute MFVec3f for MFVec3d to provide VRML 97 support'> |
87 | <!-- Specification definition: MFVec3d [in,out] point [] (-∞,∞) --> |
88 | </field> |
89 | <field name='set_point' type='MFVec3f' accessType='inputOnly'/> |
90 | <field name='point_changed' type='MFVec3f' accessType='outputOnly'/> |
91 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
92 | <!-- Specification initialization: NULL node --> |
93 | </field> |
94 | </ProtoInterface> |
95 | <ProtoBody> |
96 | <Coordinate> |
97 | <IS> |
98 | <connect nodeField='point' protoField='point'/> |
99 | <connect nodeField='set_point' protoField='set_point'/> |
100 | <connect nodeField='point_changed' protoField='point_changed'/> |
101 | </IS> |
102 | </Coordinate> |
103 | <!-- no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. --> |
104 | </ProtoBody> |
105 | </ProtoDeclare> |
106 | <ProtoDeclare name='NurbsCurve' appinfo='NurbsCurve is a 3D curve analogous to NurbsPatchSurface. The container controlPoint field is a Coordinate or CoordinateDouble node.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsCurve'> |
107 | <ProtoInterface> |
108 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'> |
109 | <Coordinate containerField='controlPoint'/> |
110 | </field> |
111 |
<field name='tessellation' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range (-∞,∞)'/> |
112 |
<field name='weight' type='MFDouble' accessType='initializeOnly'
appinfo='range (0,∞)'> |
113 | <!-- default is empty array --> |
114 | </field> |
115 | <field name='closed' type='SFBool' value='false' accessType='initializeOnly'/> |
116 |
<field name='knot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
117 | <!-- default is empty array --> |
118 | </field> |
119 |
<field name='order' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
120 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
121 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
122 | <field name='set_tessellation' type='SFInt32' accessType='inputOnly'/> |
123 | <field name='tessellation_changed' type='SFInt32' accessType='outputOnly'/> |
124 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
125 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
126 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
127 | <!-- Specification initialization: NULL node --> |
128 | </field> |
129 | </ProtoInterface> |
130 | <ProtoBody> |
131 |
<!-- ROUTE information for NurbsCurveLineSet node:
[from NurbsCurveScript.pointIndex to set_coordIndex
]
-->
<IndexedLineSet DEF='NurbsCurveLineSet'> |
132 |
<!-- ROUTE information for NurbsCurveCoord node:
[from NurbsCurveScript.point to set_point
]
-->
<Coordinate DEF='NurbsCurveCoord'/> |
133 | </IndexedLineSet> |
134 | <!-- only first child of ProtoBody renders --> |
135 | <Switch whichChoice='-1'> |
136 | <Shape> |
137 | <IndexedFaceSet> |
138 | <IS> |
139 | <connect nodeField='coord' protoField='controlPoint'/> |
140 | </IS> |
141 | </IndexedFaceSet> |
142 | </Shape> |
143 | </Switch> |
144 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
145 |
<!-- ROUTE information for NurbsCurveScript node:
[from point to NurbsCurveCoord.set_point
]
[from pointIndex to NurbsCurveLineSet.set_coordIndex
]
-->
<Script DEF='NurbsCurveScript' directOutput='true' mustEvaluate='true' url=' "NurbsCurve.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsCurve.class" '> |
146 | <field name='controlPoint' type='SFNode' accessType='initializeOnly'/> |
147 | <field name='tessellation' type='SFInt32' accessType='initializeOnly'/> |
148 | <field name='weight' type='MFDouble' accessType='initializeOnly'/> |
149 | <field name='closed' type='SFBool' accessType='initializeOnly'/> |
150 | <field name='knot' type='MFDouble' accessType='initializeOnly'/> |
151 | <field name='order' type='SFInt32' accessType='initializeOnly'/> |
152 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
153 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
154 | <field name='set_tessellation' type='SFInt32' accessType='inputOnly'/> |
155 | <field name='tessellation_changed' type='SFInt32' accessType='outputOnly'/> |
156 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
157 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
158 | <field name='point' type='MFVec3f' accessType='outputOnly'/> |
159 | <field name='pointIndex' type='MFInt32' accessType='outputOnly'/> |
160 | <IS> |
161 | <connect nodeField='controlPoint' protoField='controlPoint'/> |
162 | <connect nodeField='tessellation' protoField='tessellation'/> |
163 | <connect nodeField='weight' protoField='weight'/> |
164 | <connect nodeField='closed' protoField='closed'/> |
165 | <connect nodeField='knot' protoField='knot'/> |
166 | <connect nodeField='order' protoField='order'/> |
167 | <connect nodeField='set_controlPoint' protoField='set_controlPoint'/> |
168 | <connect nodeField='controlPoint_changed' protoField='controlPoint_changed'/> |
169 | <connect nodeField='set_tessellation' protoField='set_tessellation'/> |
170 | <connect nodeField='tessellation_changed' protoField='tessellation_changed'/> |
171 | <connect nodeField='set_weight' protoField='set_weight'/> |
172 | <connect nodeField='weight_changed' protoField='weight_changed'/> |
173 | </IS> |
174 | </Script> |
175 | < ROUTE fromNode='NurbsCurveScript' fromField='point' toNode='NurbsCurveCoord' toField='set_point'/> |
176 | < ROUTE fromNode='NurbsCurveScript' fromField='pointIndex' toNode='NurbsCurveLineSet' toField='set_coordIndex'/> |
177 | </ProtoBody> |
178 | </ProtoDeclare> |
179 | <ProtoDeclare name='NurbsCurve2D' appinfo='NurbsCurve2D defines a trimming segment that is part of trimming contour in u-v domain of surface NurbsCurve2D forming a closed contour may be used as Contour2D node.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsCurve2D'> |
180 | <ProtoInterface> |
181 |
<field name='controlPoint' type='MFVec2f' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
182 | <!-- default is empty array --> |
183 | </field> |
184 |
<field name='tessellation' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range (-∞,∞)'/> |
185 |
<field name='weight' type='MFDouble' accessType='initializeOnly'
appinfo='range (0,∞)'> |
186 | <!-- default is empty array --> |
187 | </field> |
188 |
<field name='knot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
189 | <!-- default is empty array --> |
190 | </field> |
191 |
<field name='order' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
192 | <field name='closed' type='SFBool' value='false' accessType='initializeOnly'/> |
193 | <field name='set_controlPoint' type='MFVec2f' accessType='inputOnly'/> |
194 | <field name='controlPoint_changed' type='MFVec2f' accessType='outputOnly'/> |
195 | <field name='set_tessellation' type='SFInt32' accessType='inputOnly'/> |
196 | <field name='tessellation_changed' type='SFInt32' accessType='outputOnly'/> |
197 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
198 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
199 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
200 | <!-- Specification initialization: NULL node --> |
201 | </field> |
202 | </ProtoInterface> |
203 | <ProtoBody> |
204 | <Group DEF='NurbsCurve2DGroup'/> |
205 | </ProtoBody> |
206 | </ProtoDeclare> |
207 | <ProtoDeclare name='NurbsOrientationInterpolator' appinfo='NurbsOrientationInterpolator describes a 3D NURBS Curve and outputs interpolated orientation values. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsOrientationInterpolator'> |
208 | <ProtoInterface> |
209 |
<field name='set_fraction' type='SFFloat' accessType='inputOnly'
appinfo='range (-∞,∞)'/> |
210 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'> |
211 | <Coordinate containerField='controlPoint'/> |
212 | </field> |
213 |
<field name='knot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
214 | <!-- default is empty array --> |
215 | </field> |
216 |
<field name='order' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range (2,∞)'/> |
217 |
<field name='weight' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
218 | <!-- default is empty array --> |
219 | </field> |
220 | <field name='value_changed' type='SFRotation' accessType='outputOnly'/> |
221 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
222 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
223 | <field name='set_knot' type='MFDouble' accessType='inputOnly'/> |
224 | <field name='knot_changed' type='MFDouble' accessType='outputOnly'/> |
225 | <field name='set_order' type='SFInt32' accessType='inputOnly'/> |
226 | <field name='order_changed' type='SFInt32' accessType='outputOnly'/> |
227 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
228 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
229 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
230 | <!-- Specification initialization: NULL node --> |
231 | </field> |
232 | </ProtoInterface> |
233 | <ProtoBody> |
234 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
235 | <Script DEF='NurbsOrientationInterpolatorScript' directOutput='true' mustEvaluate='true' url=' "NurbsOrientationInterpolator.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsOrientationInterpolator.class" '> |
236 | <field name='set_fraction' type='SFFloat' accessType='inputOnly'/> |
237 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'/> |
238 | <field name='knot' type='MFDouble' accessType='initializeOnly'/> |
239 | <field name='order' type='SFInt32' accessType='initializeOnly'/> |
240 | <field name='weight' type='MFDouble' accessType='initializeOnly'/> |
241 | <field name='value_changed' type='SFRotation' accessType='outputOnly'/> |
242 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
243 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
244 | <field name='set_knot' type='MFDouble' accessType='inputOnly'/> |
245 | <field name='knot_changed' type='MFDouble' accessType='outputOnly'/> |
246 | <field name='set_order' type='SFInt32' accessType='inputOnly'/> |
247 | <field name='order_changed' type='SFInt32' accessType='outputOnly'/> |
248 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
249 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
250 | <IS> |
251 | <connect nodeField='set_fraction' protoField='set_fraction'/> |
252 | <connect nodeField='controlPoint' protoField='controlPoint'/> |
253 | <connect nodeField='knot' protoField='knot'/> |
254 | <connect nodeField='order' protoField='order'/> |
255 | <connect nodeField='weight' protoField='weight'/> |
256 | <connect nodeField='value_changed' protoField='value_changed'/> |
257 | <connect nodeField='set_controlPoint' protoField='set_controlPoint'/> |
258 | <connect nodeField='controlPoint_changed' protoField='controlPoint_changed'/> |
259 | <connect nodeField='set_knot' protoField='set_knot'/> |
260 | <connect nodeField='knot_changed' protoField='knot_changed'/> |
261 | <connect nodeField='set_order' protoField='set_order'/> |
262 | <connect nodeField='order_changed' protoField='order_changed'/> |
263 | <connect nodeField='set_weight' protoField='set_weight'/> |
264 | <connect nodeField='weight_changed' protoField='weight_changed'/> |
265 | </IS> |
266 | </Script> |
267 | <!-- Nonrendering holder node for controlPoint Coordinate data --> |
268 | <Shape> |
269 | <PointSet> |
270 | <IS> |
271 | <connect nodeField='coord' protoField='controlPoint'/> |
272 | </IS> |
273 | </PointSet> |
274 | </Shape> |
275 | </ProtoBody> |
276 | </ProtoDeclare> |
277 | <ProtoDeclare name='NurbsPatchSurface' appinfo='NurbsPatchSurface defines a contiguous 3D Non- rational Uniform B-Spline (NURBS) Surface.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsPatchSurface'> |
278 | <ProtoInterface> |
279 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'> |
280 | <Coordinate containerField='controlPoint'/> |
281 | </field> |
282 | <field name='texCoord' type='SFNode' accessType='initializeOnly'> |
283 | <TextureCoordinate/> |
284 | </field> |
285 | <field name='uTessellation' type='SFInt32' value='0' accessType='initializeOnly'/> |
286 | <field name='vTessellation' type='SFInt32' value='0' accessType='initializeOnly'/> |
287 | <field name='weight' type='MFDouble' accessType='initializeOnly'> |
288 | <!-- default is empty array --> |
289 | </field> |
290 | <field name='solid' type='SFBool' value='true' accessType='initializeOnly'/> |
291 | <field name='uClosed' type='SFBool' value='false' accessType='initializeOnly'/> |
292 | <field name='uDimension' type='SFInt32' value='0' accessType='initializeOnly'/> |
293 | <field name='uKnot' type='MFDouble' accessType='initializeOnly'> |
294 | <!-- default is empty array --> |
295 | </field> |
296 | <field name='uOrder' type='SFInt32' value='3' accessType='initializeOnly'/> |
297 | <field name='vClosed' type='SFBool' value='false' accessType='initializeOnly'/> |
298 | <field name='vDimension' type='SFInt32' value='0' accessType='initializeOnly'/> |
299 | <field name='vKnot' type='MFDouble' accessType='initializeOnly'> |
300 | <!-- default is empty array --> |
301 | </field> |
302 | <field name='vOrder' type='SFInt32' value='3' accessType='initializeOnly'/> |
303 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
304 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
305 | <field name='set_texCoord' type='SFNode' accessType='inputOnly'/> |
306 | <field name='texCoord_changed' type='SFNode' accessType='outputOnly'/> |
307 | <field name='set_uTessellation' type='SFInt32' accessType='inputOnly'/> |
308 | <field name='uTessellation_changed' type='SFInt32' accessType='outputOnly'/> |
309 | <field name='set_vTessellation' type='SFInt32' accessType='inputOnly'/> |
310 | <field name='vTessellation_changed' type='SFInt32' accessType='outputOnly'/> |
311 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
312 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
313 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
314 | <!-- Specification initialization: NULL node --> |
315 | </field> |
316 | </ProtoInterface> |
317 | <ProtoBody> |
318 |
<!-- ROUTE information for NurbsPatchSurfaceFaceSet node:
[from NurbsPatchSurfaceScript.coordIndex to set_coordIndex
]
-->
<IndexedFaceSet DEF='NurbsPatchSurfaceFaceSet' creaseAngle='3.14' solid='false'> |
319 | <IS> |
320 | <connect nodeField='texCoord' protoField='texCoord'/> |
321 | <connect nodeField='solid' protoField='solid'/> |
322 | </IS> |
323 |
<!-- ROUTE information for NurbsPatchSurfaceCoordinate node:
[from NurbsPatchSurfaceScript.coord to set_point
]
-->
<Coordinate DEF='NurbsPatchSurfaceCoordinate'/> |
324 | </IndexedFaceSet> |
325 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
326 |
<!-- ROUTE information for NurbsPatchSurfaceScript node:
[from coord to NurbsPatchSurfaceCoordinate.set_point
]
[from coordIndex to NurbsPatchSurfaceFaceSet.set_coordIndex
]
-->
<Script DEF='NurbsPatchSurfaceScript' directOutput='true' mustEvaluate='true' url=' "NurbsPatchSurface.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsPatchSurface.class" '> |
327 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'/> |
328 | <field name='texCoord' type='SFNode' accessType='initializeOnly'/> |
329 | <field name='uTessellation' type='SFInt32' accessType='initializeOnly'/> |
330 | <field name='vTessellation' type='SFInt32' accessType='initializeOnly'/> |
331 | <field name='weight' type='MFDouble' accessType='initializeOnly'/> |
332 | <field name='solid' type='SFBool' accessType='initializeOnly'/> |
333 | <field name='uClosed' type='SFBool' accessType='initializeOnly'/> |
334 | <field name='uDimension' type='SFInt32' accessType='initializeOnly'/> |
335 | <field name='uKnot' type='MFDouble' accessType='initializeOnly'/> |
336 | <field name='uOrder' type='SFInt32' accessType='initializeOnly'/> |
337 | <field name='vClosed' type='SFBool' accessType='initializeOnly'/> |
338 | <field name='vDimension' type='SFInt32' accessType='initializeOnly'/> |
339 | <field name='vKnot' type='MFDouble' accessType='initializeOnly'/> |
340 | <field name='vOrder' type='SFInt32' accessType='initializeOnly'/> |
341 | <field name='coord' type='MFVec3f' accessType='outputOnly'/> |
342 | <field name='coordIndex' type='MFInt32' accessType='outputOnly'/> |
343 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
344 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
345 | <field name='set_texCoord' type='SFNode' accessType='inputOnly'/> |
346 | <field name='texCoord_changed' type='SFNode' accessType='outputOnly'/> |
347 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
348 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
349 | <field name='set_uTessellation' type='SFInt32' accessType='inputOnly'/> |
350 | <field name='uTessellation_changed' type='SFInt32' accessType='outputOnly'/> |
351 | <field name='set_vTessellation' type='SFInt32' accessType='inputOnly'/> |
352 | <field name='vTessellation_changed' type='SFInt32' accessType='outputOnly'/> |
353 | <IS> |
354 | <connect nodeField='controlPoint' protoField='controlPoint'/> |
355 | <connect nodeField='texCoord' protoField='texCoord'/> |
356 | <connect nodeField='uTessellation' protoField='uTessellation'/> |
357 | <connect nodeField='vTessellation' protoField='vTessellation'/> |
358 | <connect nodeField='weight' protoField='weight'/> |
359 | <connect nodeField='solid' protoField='solid'/> |
360 | <connect nodeField='uClosed' protoField='uClosed'/> |
361 | <connect nodeField='uDimension' protoField='uDimension'/> |
362 | <connect nodeField='uKnot' protoField='uKnot'/> |
363 | <connect nodeField='uOrder' protoField='uOrder'/> |
364 | <connect nodeField='vClosed' protoField='vClosed'/> |
365 | <connect nodeField='vDimension' protoField='vDimension'/> |
366 | <connect nodeField='vKnot' protoField='vKnot'/> |
367 | <connect nodeField='vOrder' protoField='vOrder'/> |
368 | <connect nodeField='set_controlPoint' protoField='set_controlPoint'/> |
369 | <connect nodeField='controlPoint_changed' protoField='controlPoint_changed'/> |
370 | <connect nodeField='set_texCoord' protoField='set_texCoord'/> |
371 | <connect nodeField='texCoord_changed' protoField='texCoord_changed'/> |
372 | <connect nodeField='set_uTessellation' protoField='set_uTessellation'/> |
373 | <connect nodeField='uTessellation_changed' protoField='uTessellation_changed'/> |
374 | <connect nodeField='set_vTessellation' protoField='set_vTessellation'/> |
375 | <connect nodeField='vTessellation_changed' protoField='vTessellation_changed'/> |
376 | <connect nodeField='set_weight' protoField='set_weight'/> |
377 | <connect nodeField='weight_changed' protoField='weight_changed'/> |
378 | </IS> |
379 | </Script> |
380 | < ROUTE fromNode='NurbsPatchSurfaceScript' fromField='coord' toNode='NurbsPatchSurfaceCoordinate' toField='set_point'/> |
381 | < ROUTE fromNode='NurbsPatchSurfaceScript' fromField='coordIndex' toNode='NurbsPatchSurfaceFaceSet' toField='set_coordIndex'/> |
382 | </ProtoBody> |
383 | </ProtoDeclare> |
384 | <ProtoDeclare name='NurbsPositionInterpolator' appinfo='NurbsPositionInterpolator describes a 3D NURBS Curve and outputs interpolated position values. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsPositionInterpolator'> |
385 | <ProtoInterface> |
386 |
<field name='set_fraction' type='SFFloat' accessType='inputOnly'
appinfo='range (-∞,∞)'/> |
387 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'> |
388 | <Coordinate containerField='controlPoint'/> |
389 | </field> |
390 |
<field name='knot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
391 | <!-- default is empty array --> |
392 | </field> |
393 |
<field name='order' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range (2,∞)'/> |
394 |
<field name='weight' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
395 | <!-- default is empty array --> |
396 | </field> |
397 | <field name='value_changed' type='SFVec3f' accessType='outputOnly'/> |
398 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
399 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
400 | <field name='set_knot' type='MFDouble' accessType='inputOnly'/> |
401 | <field name='knot_changed' type='MFDouble' accessType='outputOnly'/> |
402 | <field name='set_order' type='SFInt32' accessType='inputOnly'/> |
403 | <field name='order_changed' type='SFInt32' accessType='outputOnly'/> |
404 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
405 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
406 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
407 | <!-- Specification initialization: NULL node --> |
408 | </field> |
409 | </ProtoInterface> |
410 | <ProtoBody> |
411 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
412 | <Script DEF='NurbsPositionInterpolatorScript' directOutput='true' mustEvaluate='true' url=' "NurbsPositionInterpolator.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsPositionInterpolator.class" '> |
413 | <field name='set_fraction' type='SFFloat' accessType='inputOnly'/> |
414 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'/> |
415 | <field name='knot' type='MFDouble' accessType='initializeOnly'/> |
416 | <field name='order' type='SFInt32' accessType='initializeOnly'/> |
417 | <field name='weight' type='MFDouble' accessType='initializeOnly'/> |
418 | <field name='value_changed' type='SFVec3f' accessType='outputOnly'/> |
419 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
420 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
421 | <field name='set_knot' type='MFDouble' accessType='inputOnly'/> |
422 | <field name='knot_changed' type='MFDouble' accessType='outputOnly'/> |
423 | <field name='set_order' type='SFInt32' accessType='inputOnly'/> |
424 | <field name='order_changed' type='SFInt32' accessType='outputOnly'/> |
425 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
426 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
427 | <IS> |
428 | <connect nodeField='set_fraction' protoField='set_fraction'/> |
429 | <connect nodeField='controlPoint' protoField='controlPoint'/> |
430 | <connect nodeField='knot' protoField='knot'/> |
431 | <connect nodeField='order' protoField='order'/> |
432 | <connect nodeField='weight' protoField='weight'/> |
433 | <connect nodeField='value_changed' protoField='value_changed'/> |
434 | <connect nodeField='set_controlPoint' protoField='set_controlPoint'/> |
435 | <connect nodeField='controlPoint_changed' protoField='controlPoint_changed'/> |
436 | <connect nodeField='set_knot' protoField='set_knot'/> |
437 | <connect nodeField='knot_changed' protoField='knot_changed'/> |
438 | <connect nodeField='set_order' protoField='set_order'/> |
439 | <connect nodeField='order_changed' protoField='order_changed'/> |
440 | <connect nodeField='set_weight' protoField='set_weight'/> |
441 | <connect nodeField='weight_changed' protoField='weight_changed'/> |
442 | </IS> |
443 | </Script> |
444 | <!-- Nonrendering holder node for controlPoint Coordinate data --> |
445 | <Shape> |
446 | <PointSet> |
447 | <IS> |
448 | <connect nodeField='coord' protoField='controlPoint'/> |
449 | </IS> |
450 | </PointSet> |
451 | </Shape> |
452 | </ProtoBody> |
453 | </ProtoDeclare> |
454 | <ProtoDeclare name='NurbsSet' appinfo='NurbsSet collects a set of NurbsPatchSurface nodes into a common group and treats NurbsPatchSurface set as a unit during tessellation thereby enforcing tessellation continuity along borders.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsSet'> |
455 | <ProtoInterface> |
456 |
<field name='addGeometry' type='MFNode' accessType='inputOnly'
appinfo='[NurbsPatchSurface]'/> |
457 |
<field name='removeGeometry' type='MFNode' accessType='inputOnly'
appinfo='[NurbsPatchSurface]'/> |
458 |
<field name='geometry' type='MFNode' accessType='initializeOnly'
appinfo='[NurbsPatchSurface]'> |
459 | <!-- default is empty node array --> |
460 | </field> |
461 |
<field name='tessellationScale' type='SFFloat' value='1.0' accessType='initializeOnly'
appinfo='range (0,∞)'/> |
462 |
<field name='bboxCenter' type='SFVec3f' value='0 0 0' accessType='initializeOnly'
appinfo='range (-∞,∞)'/> |
463 |
<field name='bboxSize' type='SFVec3f' value='-1 -1 -1' accessType='initializeOnly'
appinfo='range [0,∞); [-1 -1 -1]'/> |
464 | <field name='set_geometry' type='MFNode' accessType='inputOnly'/> |
465 | <field name='geometry_changed' type='MFNode' accessType='outputOnly'/> |
466 | <field name='set_tessellationScale' type='SFFloat' accessType='inputOnly'/> |
467 | <field name='tessellationScale_changed' type='SFFloat' accessType='outputOnly'/> |
468 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
469 | <!-- Specification initialization: NULL node --> |
470 | </field> |
471 | </ProtoInterface> |
472 | <ProtoBody> |
473 | <Group DEF='NurbsSet'> |
474 | <IS> |
475 | <connect nodeField='addGeometry' protoField='addGeometry'/> |
476 | <connect nodeField='removeGeometry' protoField='removeGeometry'/> |
477 | <connect nodeField='geometry' protoField='geometry'/> |
478 | <connect nodeField='bboxCenter' protoField='bboxCenter'/> |
479 | <connect nodeField='bboxSize' protoField='bboxSize'/> |
480 | <connect nodeField='set_geometry' protoField='set_geometry'/> |
481 | <connect nodeField='geometry_changed' protoField='geometry_changed'/> |
482 | <connect nodeField='set_tessellationScale' protoField='set_tessellationScale'/> |
483 | <connect nodeField='tessellationScale_changed' protoField='tessellationScale_changed'/> |
484 | </IS> |
485 | </Group> |
486 | </ProtoBody> |
487 | </ProtoDeclare> |
488 | <ProtoDeclare name='NurbsSurfaceInterpolator' appinfo='NurbsSurfaceInterpolator describes a 3D NURBS Curve and outputs interpolated position and normal values. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsSurfaceInterpolator'> |
489 | <ProtoInterface> |
490 |
<field name='set_fraction' type='SFVec2f' accessType='inputOnly'
appinfo='range (-∞,∞)'/> |
491 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'> |
492 | <Coordinate containerField='controlPoint'/> |
493 | </field> |
494 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
495 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
496 |
<field name='weight' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
497 | <!-- default is empty array --> |
498 | </field> |
499 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
500 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
501 | <field name='position_changed' type='SFVec3f' accessType='outputOnly'/> |
502 | <field name='normal_changed' type='SFVec3f' accessType='outputOnly'/> |
503 |
<field name='uDimension' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range [0,∞)'/> |
504 |
<field name='uKnot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
505 | <!-- default is empty array --> |
506 | </field> |
507 |
<field name='uOrder' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
508 |
<field name='vDimension' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range [0,∞)'/> |
509 |
<field name='vKnot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
510 | <!-- default is empty array --> |
511 | </field> |
512 |
<field name='vOrder' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
513 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
514 | <!-- Specification initialization: NULL node --> |
515 | </field> |
516 | </ProtoInterface> |
517 | <ProtoBody> |
518 |
<!-- ROUTE information for NurbsSurfaceInterpolatorFaceSet node:
[from NurbsSurfaceInterpolatorScript.coordIndex to set_coordIndex
]
-->
<IndexedFaceSet DEF='NurbsSurfaceInterpolatorFaceSet' creaseAngle='3.14' solid='false'> |
519 |
<!-- ROUTE information for NurbsSurfaceInterpolatorCoordinate node:
[from NurbsSurfaceInterpolatorScript.coord to set_point
]
-->
<Coordinate DEF='NurbsSurfaceInterpolatorCoordinate'/> |
520 | </IndexedFaceSet> |
521 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
522 |
<!-- ROUTE information for NurbsSurfaceInterpolatorScript node:
[from coord to NurbsSurfaceInterpolatorCoordinate.set_point
]
[from coordIndex to NurbsSurfaceInterpolatorFaceSet.set_coordIndex
]
-->
<Script DEF='NurbsSurfaceInterpolatorScript' directOutput='true' mustEvaluate='true' url=' "NurbsSurfaceInterpolator.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsSurfaceInterpolator.class" '> |
523 | <field name='controlPoint' type='SFNode' accessType='initializeOnly'/> |
524 | <field name='weight' type='MFDouble' accessType='initializeOnly'/> |
525 | <field name='uDimension' type='SFInt32' accessType='initializeOnly'/> |
526 | <field name='uKnot' type='MFDouble' accessType='initializeOnly'/> |
527 | <field name='uOrder' type='SFInt32' accessType='initializeOnly'/> |
528 | <field name='vDimension' type='SFInt32' accessType='initializeOnly'/> |
529 | <field name='vKnot' type='MFDouble' accessType='initializeOnly'/> |
530 | <field name='vOrder' type='SFInt32' accessType='initializeOnly'/> |
531 | <field name='coord' type='MFVec3f' accessType='outputOnly'/> |
532 | <field name='coordIndex' type='MFInt32' accessType='outputOnly'/> |
533 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
534 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
535 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
536 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
537 | <IS> |
538 | <connect nodeField='controlPoint' protoField='controlPoint'/> |
539 | <connect nodeField='weight' protoField='weight'/> |
540 | <connect nodeField='uDimension' protoField='uDimension'/> |
541 | <connect nodeField='uKnot' protoField='uKnot'/> |
542 | <connect nodeField='uOrder' protoField='uOrder'/> |
543 | <connect nodeField='vDimension' protoField='vDimension'/> |
544 | <connect nodeField='vKnot' protoField='vKnot'/> |
545 | <connect nodeField='vOrder' protoField='vOrder'/> |
546 | <connect nodeField='set_controlPoint' protoField='set_controlPoint'/> |
547 | <connect nodeField='controlPoint_changed' protoField='controlPoint_changed'/> |
548 | <connect nodeField='set_weight' protoField='set_weight'/> |
549 | <connect nodeField='weight_changed' protoField='weight_changed'/> |
550 | </IS> |
551 | </Script> |
552 | < ROUTE fromNode='NurbsSurfaceInterpolatorScript' fromField='coord' toNode='NurbsSurfaceInterpolatorCoordinate' toField='set_point'/> |
553 | < ROUTE fromNode='NurbsSurfaceInterpolatorScript' fromField='coordIndex' toNode='NurbsSurfaceInterpolatorFaceSet' toField='set_coordIndex'/> |
554 | </ProtoBody> |
555 | </ProtoDeclare> |
556 | <ProtoDeclare name='NurbsSweptSurface' appinfo='NurbsSweptSurface contains a crossSectionCurve [X3DNurbsControlCurveNode] and a trajectoryCurve [NurbsCurve]' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsSweptSurface'> |
557 | <ProtoInterface> |
558 |
<field name='crossSectionCurve' type='SFNode' accessType='initializeOnly'
appinfo='[X3DNurbsControlCurveNode]'> |
559 | <!-- put default node here... --> |
560 | </field> |
561 |
<field name='trajectoryCurve' type='SFNode' accessType='initializeOnly'
appinfo='[NurbsCurve]'> |
562 | <!-- put default node here... --> |
563 | </field> |
564 | <field name='ccw' type='SFBool' value='true' accessType='initializeOnly'/> |
565 | <field name='solid' type='SFBool' value='true' accessType='initializeOnly'/> |
566 |
<field name='set_crossSectionCurve' type='SFNode' accessType='inputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
567 |
<field name='crossSectionCurve_changed' type='SFNode' accessType='outputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
568 |
<field name='set_trajectoryCurve' type='SFNode' accessType='inputOnly'
appinfo='[NurbsCurve]'/> |
569 |
<field name='trajectoryCurve_changed' type='SFNode' accessType='outputOnly'
appinfo='[NurbsCurve]'/> |
570 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
571 | <!-- Specification initialization: NULL node --> |
572 | </field> |
573 | </ProtoInterface> |
574 | <ProtoBody> |
575 |
<!-- ROUTE information for NurbsSweptSurfaceFaceSet node:
[from NurbsSweptSurfaceScript.crossSectionCurve_changed to coord
]
[from NurbsSweptSurfaceScript.coordIndex to set_coordIndex
]
-->
<IndexedFaceSet DEF='NurbsSweptSurfaceFaceSet' creaseAngle='3.14' solid='false'> |
576 | <IS> |
577 | <connect nodeField='ccw' protoField='ccw'/> |
578 | <connect nodeField='solid' protoField='solid'/> |
579 | </IS> |
580 | <Coordinate DEF='NurbsSweptSurfaceCoordinate'/> |
581 | </IndexedFaceSet> |
582 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
583 |
<!-- ROUTE information for NurbsSweptSurfaceScript node:
[from crossSectionCurve_changed to NurbsSweptSurfaceFaceSet.coord
]
[from coordIndex to NurbsSweptSurfaceFaceSet.set_coordIndex
]
-->
<Script DEF='NurbsSweptSurfaceScript' directOutput='true' mustEvaluate='true' url=' "NurbsSweptSurface.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbsSweptSurface.class" '> |
584 |
<field name='crossSectionCurve' type='SFNode' accessType='initializeOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
585 |
<field name='trajectoryCurve' type='SFNode' accessType='initializeOnly'
appinfo='[NurbsCurve]'/> |
586 | <field name='ccw' type='SFBool' accessType='initializeOnly'/> |
587 | <field name='solid' type='SFBool' accessType='initializeOnly'/> |
588 |
<field name='set_crossSectionCurve' type='SFNode' accessType='inputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
589 |
<field name='crossSectionCurve_changed' type='SFNode' accessType='outputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
590 |
<field name='set_trajectoryCurve' type='SFNode' accessType='inputOnly'
appinfo='[NurbsCurve]'/> |
591 |
<field name='trajectoryCurve_changed' type='SFNode' accessType='outputOnly'
appinfo='[NurbsCurve]'/> |
592 | <IS> |
593 | <connect nodeField='crossSectionCurve' protoField='crossSectionCurve'/> |
594 | <connect nodeField='trajectoryCurve' protoField='trajectoryCurve'/> |
595 | <connect nodeField='ccw' protoField='ccw'/> |
596 | <connect nodeField='solid' protoField='solid'/> |
597 | <connect nodeField='set_crossSectionCurve' protoField='set_crossSectionCurve'/> |
598 | <connect nodeField='crossSectionCurve_changed' protoField='crossSectionCurve_changed'/> |
599 | <connect nodeField='set_trajectoryCurve' protoField='set_trajectoryCurve'/> |
600 | <connect nodeField='trajectoryCurve_changed' protoField='trajectoryCurve_changed'/> |
601 | </IS> |
602 | </Script> |
603 | < ROUTE fromNode='NurbsSweptSurfaceScript' fromField='crossSectionCurve_changed' toNode='NurbsSweptSurfaceFaceSet' toField='coord'/> |
604 | < ROUTE fromNode='NurbsSweptSurfaceScript' fromField='coordIndex' toNode='NurbsSweptSurfaceFaceSet' toField='set_coordIndex'/> |
605 | </ProtoBody> |
606 | </ProtoDeclare> |
607 | <ProtoDeclare name='NurbsSwungSurface' appinfo='NurbsSwungSurface contains a profileCurve [X3DNurbsControlCurveNode] and a trajectoryCurve [X3DNurbsControlCurveNode]' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsSwungSurface'> |
608 | <ProtoInterface> |
609 |
<field name='profileCurve' type='SFNode' accessType='inputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
610 |
<field name='trajectoryCurve' type='SFNode' accessType='inputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
611 | <field name='ccw' type='SFBool' value='true' accessType='initializeOnly'/> |
612 | <field name='solid' type='SFBool' value='true' accessType='initializeOnly'/> |
613 | <field name='set_profileCurve' type='SFNode' accessType='inputOnly'/> |
614 | <field name='profileCurve_changed' type='SFNode' accessType='outputOnly'/> |
615 | <field name='set_trajectoryCurve' type='SFNode' accessType='inputOnly'/> |
616 | <field name='trajectoryCurve_changed' type='SFNode' accessType='outputOnly'/> |
617 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
618 | <!-- Specification initialization: NULL node --> |
619 | </field> |
620 | </ProtoInterface> |
621 | <ProtoBody> |
622 |
<!-- ROUTE information for NurbsSwungSurfaceFaceSet node:
[from NurbsSwungSurfaceScript.coordIndex to set_coordIndex
]
-->
<IndexedFaceSet DEF='NurbsSwungSurfaceFaceSet' creaseAngle='3.14' solid='false'> |
623 | <IS> |
624 | <connect nodeField='ccw' protoField='ccw'/> |
625 | <connect nodeField='solid' protoField='solid'/> |
626 | </IS> |
627 |
<!-- ROUTE information for NurbsSwungSurfaceCoordinate node:
[from NurbsSwungSurfaceScript.coord to set_point
]
-->
<Coordinate DEF='NurbsSwungSurfaceCoordinate'/> |
628 | </IndexedFaceSet> |
629 | <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) --> |
630 |
<!-- ROUTE information for NurbsSwungSurfaceScript node:
[from coord to NurbsSwungSurfaceCoordinate.set_point
]
[from coordIndex to NurbsSwungSurfaceFaceSet.set_coordIndex
]
-->
<Script DEF='NurbsSwungSurfaceScript' directOutput='true' mustEvaluate='true' url=' "NurbSwungSurface.class" "https://www.web3d.org/x3d/content/examples/Basic/NURBS/NurbSwungSurface.class" '> |
631 |
<field name='profileCurve' type='SFNode' accessType='inputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
632 |
<field name='trajectoryCurve' type='SFNode' accessType='inputOnly'
appinfo='[X3DNurbsControlCurveNode]'/> |
633 | <field name='ccw' type='SFBool' accessType='initializeOnly'/> |
634 | <field name='solid' type='SFBool' accessType='initializeOnly'/> |
635 | <field name='set_profileCurve' type='SFNode' accessType='inputOnly'/> |
636 | <field name='profileCurve_changed' type='SFNode' accessType='outputOnly'/> |
637 | <field name='set_trajectoryCurve' type='SFNode' accessType='inputOnly'/> |
638 | <field name='trajectoryCurve_changed' type='SFNode' accessType='outputOnly'/> |
639 | <IS> |
640 | <connect nodeField='profileCurve' protoField='profileCurve'/> |
641 | <connect nodeField='trajectoryCurve' protoField='trajectoryCurve'/> |
642 | <connect nodeField='ccw' protoField='ccw'/> |
643 | <connect nodeField='solid' protoField='solid'/> |
644 | <connect nodeField='set_profileCurve' protoField='set_profileCurve'/> |
645 | <connect nodeField='profileCurve_changed' protoField='profileCurve_changed'/> |
646 | <connect nodeField='set_trajectoryCurve' protoField='set_trajectoryCurve'/> |
647 | <connect nodeField='trajectoryCurve_changed' protoField='trajectoryCurve_changed'/> |
648 | </IS> |
649 | </Script> |
650 | < ROUTE fromNode='NurbsSwungSurfaceScript' fromField='coord' toNode='NurbsSwungSurfaceCoordinate' toField='set_point'/> |
651 | < ROUTE fromNode='NurbsSwungSurfaceScript' fromField='coordIndex' toNode='NurbsSwungSurfaceFaceSet' toField='set_coordIndex'/> |
652 | </ProtoBody> |
653 | </ProtoDeclare> |
654 | <ProtoDeclare name='NurbsTextureCoordinate' appinfo='NurbsTextureCoordinate describes a 3D NURBS surface in the parametric domain of its surface host specifying mapping of texture onto the surface. The SFNode controlPoint field can contain a single Coordinate or CoordinateDouble node.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsTextureCoordinate'> |
655 | <ProtoInterface> |
656 |
<field name='controlPoint' type='MFVec2f' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
657 | <!-- default is empty array --> |
658 | </field> |
659 |
<field name='weight' type='MFFloat' accessType='initializeOnly'
appinfo='range (0,∞)'> |
660 | <!-- default is empty array --> |
661 | </field> |
662 |
<field name='uDimension' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range [0,∞)'/> |
663 |
<field name='uKnot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
664 | <!-- default is empty array --> |
665 | </field> |
666 |
<field name='uOrder' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
667 |
<field name='vDimension' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range [0,∞)'/> |
668 |
<field name='vKnot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
669 | <!-- default is empty array --> |
670 | </field> |
671 |
<field name='vOrder' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
672 | <field name='set_controlPoint' type='MFVec2f' accessType='inputOnly'/> |
673 | <field name='controlPoint_changed' type='MFVec2f' accessType='outputOnly'/> |
674 | <field name='set_weight' type='MFFloat' accessType='inputOnly'/> |
675 | <field name='weight_changed' type='MFFloat' accessType='outputOnly'/> |
676 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
677 | <!-- Specification initialization: NULL node --> |
678 | </field> |
679 | </ProtoInterface> |
680 | <ProtoBody> |
681 |
<!-- IndexedLineSet
NurbsTextureCoordinateIls is a DEF node that has 1 USE node: USE_1 -->
<IndexedLineSet DEF='NurbsTextureCoordinateIls' coordIndex='1 2 3 -1 5 6 7 -1'> |
682 | <Coordinate DEF='NurbsTextureCoordinateIlsCoordinate'> |
683 | <IS> |
684 | <connect nodeField='point' protoField='controlPoint'/> |
685 | </IS> |
686 | </Coordinate> |
687 | </IndexedLineSet> |
688 | <Script DEF='NurbsTextureCoordinateScript' directOutput='true'> |
689 | <field name='uDimension' type='SFInt32' accessType='initializeOnly'/> |
690 | <field name='vDimension' type='SFInt32' accessType='initializeOnly'/> |
691 | <field name='ils' type='SFNode' accessType='initializeOnly'> |
692 | <IndexedLineSet USE='NurbsTextureCoordinateIls'/> |
693 | </field> |
694 | <field name='localCoordIndex' type='MFInt32' accessType='initializeOnly'> |
695 | <!-- local computations array prior to sending completed event --> |
696 | </field> |
697 | <IS> |
698 | <connect nodeField='uDimension' protoField='uDimension'/> |
699 | <connect nodeField='vDimension' protoField='vDimension'/> |
700 | </IS> |
<![CDATA[
ecmascript: function initialize() { //Browser.println ('Sorry, your browser does not support NURBS nodes'); counter = 0; number = 0; localCoordIndex = new MFInt32(); localCoordIndex.length = 2*vDimension * uDimension + uDimension + vDimension; for(v=0; v<vDimension;v++) { for(u=0; u<uDimension;u++) { localCoordIndex[counter] = number; counter++; number++; } localCoordIndex[counter] = -1; counter++; } for(u=0; u<uDimension;u++) { for(v=0; v<vDimension;v++) { localCoordIndex[counter] = v*uDimension + u; counter++; number++; } localCoordIndex[counter] = -1; counter++; } ils.set_coordIndex = localCoordIndex; }
]]>
|
|
702 | </Script> |
703 | </ProtoBody> |
704 | </ProtoDeclare> |
705 | <ProtoDeclare name='NurbsTrimmedCoordinate' appinfo='NurbsTrimmedSurface generates texture coordinates from a Non-rational Uniform B-Spline (NURBS) surface.' documentation='https://www.web3d.org/x3d/content/X3dTooltips.html#NurbsTrimmedSurface'> |
706 | <ProtoInterface> |
707 |
<field name='addTrimmingContour' type='MFNode' accessType='inputOnly'
appinfo='Contour2D'/> |
708 |
<field name='removeTrimmingContour' type='MFNode' accessType='inputOnly'
appinfo='Contour2D'/> |
709 |
<field name='controlPoint' type='SFNode' accessType='initializeOnly'
appinfo='[X3DCoordinateNode]'> |
710 | <Coordinate containerField='controlPoint'/> |
711 | </field> |
712 |
<field name='texCoord' type='SFNode' accessType='initializeOnly'
appinfo='X3DTextureCoordinateNode|NurbsTextureCoordinate'> |
713 | <TextureCoordinate/> |
714 | </field> |
715 |
<field name='trimmingContour' type='MFNode' accessType='initializeOnly'
appinfo='Contour2D'> |
716 | <Contour2D containerField='trimmingContour'/> |
717 | </field> |
718 |
<field name='uTessellation' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range (-∞,∞)'/> |
719 |
<field name='vTessellation' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range (-∞,∞)'/> |
720 |
<field name='weight' type='MFDouble' accessType='initializeOnly'
appinfo='range (0,∞)'> |
721 | <!-- default is empty array --> |
722 | </field> |
723 | <field name='solid' type='SFBool' value='true' accessType='initializeOnly'/> |
724 | <field name='uClosed' type='SFBool' value='false' accessType='initializeOnly'/> |
725 |
<field name='uDimension' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range [0,∞)'/> |
726 |
<field name='uKnot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
727 | <!-- default is empty array --> |
728 | </field> |
729 |
<field name='uOrder' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
730 | <field name='vClosed' type='SFBool' value='false' accessType='initializeOnly'/> |
731 |
<field name='vDimension' type='SFInt32' value='0' accessType='initializeOnly'
appinfo='range [0,∞)'/> |
732 |
<field name='vKnot' type='MFDouble' accessType='initializeOnly'
appinfo='range (-∞,∞)'> |
733 | <!-- default is empty array --> |
734 | </field> |
735 |
<field name='vOrder' type='SFInt32' value='3' accessType='initializeOnly'
appinfo='range [2,∞)'/> |
736 | <field name='set_controlPoint' type='SFNode' accessType='inputOnly'/> |
737 | <field name='controlPoint_changed' type='SFNode' accessType='outputOnly'/> |
738 | <field name='set_texCoord' type='SFNode' accessType='inputOnly'/> |
739 | <field name='texCoord_changed' type='SFNode' accessType='outputOnly'/> |
740 | <field name='set_trimmingContour' type='MFNode' accessType='inputOnly'/> |
741 | <field name='trimmingContour_changed' type='MFNode' accessType='outputOnly'/> |
742 | <field name='set_uTessellation' type='SFInt32' accessType='inputOnly'/> |
743 | <field name='uTessellation_changed' type='SFInt32' accessType='outputOnly'/> |
744 | <field name='set_vTessellation' type='SFInt32' accessType='inputOnly'/> |
745 | <field name='vTessellation_changed' type='SFInt32' accessType='outputOnly'/> |
746 | <field name='set_weight' type='MFDouble' accessType='inputOnly'/> |
747 | <field name='weight_changed' type='MFDouble' accessType='outputOnly'/> |
748 |
<field name='metadata' type='SFNode' accessType='inputOutput'
appinfo='Metadata node only'> |
749 | <!-- Specification initialization: NULL node --> |
750 | </field> |
751 | <field name='localCoordIndex' type='MFInt32' accessType='initializeOnly'> |
752 | <!-- local computations array prior to sending completed event --> |
753 | </field> |
754 | </ProtoInterface> |
755 | <ProtoBody> |
756 |
<!-- IndexedLineSet
NurbsTextureSurfaceIls is a DEF node that has 1 USE node: USE_1 -->
<IndexedLineSet DEF='NurbsTextureSurfaceIls' coordIndex='1 2 3 -1 5 6 7 -1'> |
757 | <Coordinate DEF='NurbsTextureSurfaceIlsCoordinate'> |
758 | <IS> |
759 | <connect nodeField='point' protoField='controlPoint'/> |
760 | </IS> |
761 | </Coordinate> |
762 | </IndexedLineSet> |
763 | <Script DEF='NurbsTextureSurfaceScript' directOutput='true'> |
764 | <field name='uDimension' type='SFInt32' accessType='initializeOnly'/> |
765 | <field name='vDimension' type='SFInt32' accessType='initializeOnly'/> |
766 | <field name='ils' type='SFNode' accessType='initializeOnly'> |
767 | <IndexedLineSet USE='NurbsTextureSurfaceIls'/> |
768 | </field> |
769 | <IS> |
770 | <connect nodeField='uDimension' protoField='uDimension'/> |
771 | <connect nodeField='vDimension' protoField='vDimension'/> |
772 | </IS> |
<![CDATA[
ecmascript: function initialize() { //Browser.println ('Sorry, your browser does not support NURBS nodes'); counter = 0; number = 0; localCoordIndex = new MFInt32(); localCoordIndexlength = 2*vDimension * uDimension + uDimension + vDimension; for(v=0; v<vDimension;v++) { for(u=0; u<uDimension;u++) { localCoordIndex[counter] = number; counter++; number++; } localCoordIndex[counter] = -1; counter++; } for(u=0; u<uDimension;u++) { for(v=0; v<vDimension;v++) { localCoordIndex[counter] = v*uDimension + u; counter++; number++; } localCoordIndex[counter] = -1; counter++; } ils.set_coordIndex = localCoordIndex; }
]]>
|
|
774 | </Script> |
775 | </ProtoBody> |
776 | </ProtoDeclare> |
777 | <Shape> |
778 | <Appearance> |
779 | <Material diffuseColor='0.8 0.6 0.2'/> |
780 | </Appearance> |
781 | <Text string='"NurbsPrototypes is a" "developmental file for" "Nurbs implementations."'> |
782 | <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.7'/> |
783 | </Text> |
784 | </Shape> |
785 | </Scene> |
786 | </X3D> |
Event Graph ROUTE Table entries with 10 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
NurbsCurveScript
Script point MFVec3f |
NurbsCurveCoord
Coordinate set_point MFVec3f |
|
NurbsCurveScript
Script pointIndex MFInt32 |
NurbsCurveLineSet
IndexedLineSet set_coordIndex MFInt32 |
NurbsPatchSurfaceScript
Script coord MFVec3f |
NurbsPatchSurfaceCoordinate
Coordinate set_point MFVec3f |
|
NurbsPatchSurfaceScript
Script coordIndex MFInt32 |
NurbsPatchSurfaceFaceSet
IndexedFaceSet set_coordIndex MFInt32 |
NurbsSurfaceInterpolatorScript
Script coord MFVec3f |
NurbsSurfaceInterpolatorCoordinate
Coordinate set_point MFVec3f |
|
NurbsSurfaceInterpolatorScript
Script coordIndex MFInt32 |
NurbsSurfaceInterpolatorFaceSet
IndexedFaceSet set_coordIndex MFInt32 |
NurbsSweptSurfaceScript
Script crossSectionCurve_changed SFNode |
NurbsSweptSurfaceFaceSet
IndexedFaceSet coord SFNode |
|
NurbsSweptSurfaceScript
Script coordIndex MFInt32 |
NurbsSweptSurfaceFaceSet
IndexedFaceSet set_coordIndex MFInt32 |
NurbsSwungSurfaceScript
Script coord SFNode |
NurbsSwungSurfaceCoordinate
Coordinate set_point MFVec3f |
|
NurbsSwungSurfaceScript
Script coordIndex MFInt32 |
NurbsSwungSurfaceFaceSet
IndexedFaceSet set_coordIndex MFInt32 |
NurbsTextureCoordinateScript
Script |
No ROUTE connection found for output events from this node. Contains SFNode field with direct access to another node. |
NurbsTextureSurfaceScript
Script |
No ROUTE connection found for output events from this node. Contains SFNode field with direct access to another node. |
<!--
Color legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
<ProtoDeclare
name='ProtoName'>
<field
name='fieldName'/> </ProtoDeclare>
-->
<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->