1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
|
-- File: Vrml.cdl
-- Created: Mon Dec 23 10:38:06 1996
-- Author: Alexander BRIVIN and Dmitry TARASOV
-- <brivin@minox.nizhny.matra-dtv.fr>
---Copyright: Matra Datavision 1996
package Vrml
---Purpose: Vrml package implements the specification of the
-- VRML ( Virtual Reality Modeling Language ). VRML
-- is a standard language for describing interactive
-- 3-D objects and worlds delivered across Internet.
-- Actual version of Vrml package have made for objects
-- of VRML version 1.0.
-- This package is used by VrmlConverter package.
-- The developer should already be familiar with VRML
-- specification before using this package.
-- Coordinate System
-- VRML uses a Cartesian, right-handed, 3-dimensional coordinate system.
-- By default, objects are projected onto a 2-dimensional device by projecting
-- them in the direction of the positive Z axis, with the positive X axis to
-- the right and the positive Y axis up. A camera or modeling transformation
-- may be used to alter this default projection.
-- The standard unit for lengths and distances specified is meters.
-- The standard unit for angles is radians.
-- Fields
-- There are two general classes of fields; fields that contain a single value
-- (where a value may be a single number, a vector, or even an image), and fields that
-- contain multiple values. Single-valued fields all have names that begin with "SF",
-- multiple-valued fields have names that begin with "MF". Each field type defines
-- the format for the values it writes.
-- Nodes
-- VRML defines several different classes of nodes. Most of the nodes can be classified
-- into one of three categories; shape, property or group. Shape nodes define the geometry
-- in the world. Conceptually, they are the only nodes that draw anything. Property nodes
-- affect the way shapes are drawn. And grouping nodes gather other nodes together, allowing
-- collections of nodes to be treated as a single object. Some group nodes also control
-- whether or not their children are drawn.
-- Nodes may contain zero or more fields. Each node type defines the type, name, and default
-- value for each of its fields. The default value for the field is used if a value for
-- the field is not specified in the VRML file.
-- Instancing
-- A node may be the child of more than one group. This is called "instancing" (using the same
-- instance of a node multiple times, called "aliasing" or "multiple references" by other
-- systems), and is accomplished by using the "USE" and "DEF keywords.
uses
TColStd,
TColgp,
MMgt,
Quantity,
gp,
TCollection
is
---Category: Classes of VRML field types.
---Purpose: qualifies all types of VRML fields.
-- Notes:
-- SFBitMask VRML type == enumeration
-- SFBool VRML type == Boolean from Standard
-- SFColor VRML type == Color from Quantity
-- SFEnum VRML type == enumeration
-- SFFloat VRML type == Real from Standard
-- SFLong VRML type == Integer from Standard
-- SFMatrix VRML type == Trsf from gp
-- SFString VRML type == AsciiSting from TCollection
-- SFVec2f VRML type == Vec2d from gp
-- SFVec3f VRML type == Vec from gp
-- MFColor VRML type == HArray1OfColor from Quantity
-- MFLong VRML type == HArray1OfInteger from TColStd
-- MFFloat VRML type == HArray1OfReal from TColStd
-- MFString VRML type == HArray1OfAsciiString from TColStd
-- MFVec2f VRML type == HArray1OfVec2d from TColgp
-- MFVec3f VRML type == HArray1OfVec from TColgp
---Purpose: defines SFImage type of VRML field types.
class SFImage;
---Purpose: defines SFRotation type of VRML field types.
class SFRotation;
-- Enumeration for field representating a number of components
-- in the image per pixel for a SFImage type
--
-- One-component image will have one-bite hexadecimal values
-- presenting the intensity of the image
-- Ex: 0xFF is full intensity, 0x00 is no intensity
-- A two-component image puts the intensity in the first (hight) byte
-- and the transparency in the second (low) byte
-- Pixels in a three-component image have the red component in the first (hight) byte,
-- followed by green and blue components. Ex: 0xFF0000 is red.
-- Four-component images put transparency byte after red/green/blue
-- Ex: 0x0000FF80 is semi-transparent blue. A value of 1.0 is completely transparent,
-- 0.0 is completely opaque.
enumeration SFImageNumber
is
NULL,
ONE,
TWO,
THREE,
FOUR
end SFImageNumber;
---Category: Classes of VRML nodes specifying geometry shapes.
---Purpose: qualifies VRML geometry shapes.
-- a SFBitMask type for Parts field of a Cone node
enumeration ConeParts
is
ConeSIDES, -- The conical part
ConeBOTTOM, -- The bottom circular face
ConeALL -- All parts
end ConeParts;
-- a SFEnum VRML type for Justification field of a AsciiText node
enumeration AsciiTextJustification
is
LEFT, -- Align left edge of text to origin
CENTER, -- Align center of text to origin
RIGHT -- Align right edge of text to origin
end AsciiTextJustification;
-- a SFBitMask type for Parts field of a Cylinder node
enumeration CylinderParts
is
CylinderSIDES, -- The tubular part
CylinderTOP, -- The top circular face
CylinderBOTTOM, -- The bottom circular face
CylinderALL -- All parts
end CylinderParts;
class AsciiText;
class Cone;
class Cube;
class Cylinder;
class IndexedFaceSet;
class IndexedLineSet;
class PointSet;
class Sphere;
---Category: Classes of VRML nodes specifying properties of geometry
--- and its appearance.
---Purpose: qualifies properties of geometry and its appearance.
-- a SFBitMask type for Family field of a FontStyle node
enumeration FontStyleFamily
is
SERIF, -- Serif style (such as TimesRoman)
SANS, -- Sans-serif style (such as Helvetica)
TYPEWRITER -- Fixed pitch style (such as Courier)
end FontStyleFamily;
-- a SFEnum VRML type for Style field of a FontStyle node
enumeration FontStyleStyle
is
NONE, -- No modifications to family
BOLD, -- Embolden family
ITALIC -- Italicize or slant family
end FontStyleStyle;
-- a SFEnum VRML type for Value field of a MaterialBinding
-- and NormalBinding nodes
enumeration MaterialBindingAndNormalBinding
is
DEFAULT,
OVERALL,
PER_PART,
PER_PART_INDEXED,
PER_FACE,
PER_FACE_INDEXED,
PER_VERTEX,
PER_VERTEX_INDEXED
end MaterialBindingAndNormalBinding;
-- a SFEnum VRML type for wrapS and wrapT fields of a Texture2 node
enumeration Texture2Wrap --Texture wrap type
is
REPEAT, -- Repeats texture outside 0-1 texture coordinate range
CLAMP -- Clamps texture coordinates to lie within 0-1 range
end Texture2Wrap;
-- a SFEnum VRML type for VertexOrdering field of a ShapeHints node
enumeration VertexOrdering
is
UNKNOWN_ORDERING,
CLOCKWISE,
COUNTERCLOCKWISE
end VertexOrdering;
-- a SFEnum VRML type for ShapeType field of a ShapeHints node
enumeration ShapeType
is
UNKNOWN_SHAPE_TYPE,
SOLID
end ShapeType;
-- a SFEnum VRML type for FaceType field of a ShapeHints node
enumeration FaceType
is
UNKNOWN_FACE_TYPE,
CONVEX
end FaceType;
class Coordinate3;
class FontStyle;
class Info;
class LOD;
class Material;
class MaterialBinding;
class Normal;
class NormalBinding;
class Texture2;
class Texture2Transform;
class TextureCoordinate2;
class ShapeHints;
---Category: Classes of VRML nodes specifying matrix and transform
--- properties.
---Purpose: qualifies matrix and transform properties.
class MatrixTransform;
class Rotation;
class Scale;
class Transform;
class Translation;
---Category: Classes of VRML nodes specifying properties of cameras
--- and lights.
---Purpose: qualifies properties of cameras and lights.
class OrthographicCamera;
class PerspectiveCamera;
class DirectionalLight;
class PointLight;
class SpotLight;
---Category: Classes of VRML nodes specifying group properties.
---Purpose: qualifies group properties.
-- a SFEnum VRML type for RenderCulling field of a Separator node-
enumeration SeparatorRenderCulling -- Possible values for culling
is
OFF, -- Never cull
ON, -- Always cull
AUTO -- Decide based on some heuristic
end SeparatorRenderCulling;
-- a SFEnum VRML type for Map field of a WWWAnchor node
enumeration WWWAnchorMap
is
MAP_NONE, -- Leave URL name alone
POINT -- Add object coords to URL name
end WWWAnchorMap;
class Group;
class Separator;
class Switch;
class TransformSeparator;
class WWWAnchor;
class WWWInline;
class Instancing;
---Category: Methods to write commentaries in anOStream (VRML file).
---Purpose: Writes a header in anOStream (VRML file).
VrmlHeaderWriter ( anOStream: in out OStream from Standard )
returns OStream from Standard;
---C++: return &
---Purpose: Writes one line of commentary in anOStream (VRML file).
CommentWriter ( aComment : CString from Standard;
anOStream : in out OStream from Standard )
returns OStream from Standard;
---C++: return &
end Vrml;
|