/
x3domflowers.js
163 lines (154 loc) · 8.52 KB
/
x3domflowers.js
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
var java = require('java');
java.asyncOptions = {
asyncSuffix: undefined, // Don't generate node-style methods taking callbacks
syncSuffix: "", // Sync methods use the base name(!!)
promiseSuffix: "Promise", // Generate methods returning promises, using the suffix Promise.
promisify: require('util').promisify, // Needs Node.js version 8 or greater, see comment below
ifReadOnlySuffix: "_alt"
};
var autoclass = require('./X3Dautoclass');
// Javadoc annotations follow, see below for source.
/**
* <p> 5 or more prismatic flowers. </p>
<p> Related links: x3domflowers.java source, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a> and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
<table style="color:black; border:0px solid; border-spacing:10px 0px;" summary="Scene Metadata">
<tr style="background-color:silver; border-color:silver;">
<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
<td style="text-align:left; padding:10px 0px;">net.x3djsonld.data.x3domflowers Document Metadata </td>
</tr>
<tr>
<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
<td> <a href="https://coderextreme.net/X3DJSONLD/src/main/data/x3domflowers.x3d">x3domflowers.x3d</a> </td>
</tr>
<tr>
<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
<td> John Carlson </td>
</tr>
<tr>
<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
<td> 5 or more prismatic flowers </td>
</tr>
<tr>
<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
<td> X3D-Edit, <a href="https://savage.nps.edu/X3D-Edit" target="_blank">https://savage.nps.edu/X3D-Edit</a> </td>
</tr>
<tr>
<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
<td> <a href="https://coderextreme.net/X3DJSONLD/src/main/data/x3domflowers.x3d" target="_blank">https://coderextreme.net/X3DJSONLD/src/main/data/x3domflowers.x3d</a> </td>
</tr>
<tr style="background-color:silver; border-color:silver;">
<td style="text-align:center;" colspan="2"> </td>
</tr>
</table>
<p>
This program uses the
<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
It has been produced using the
<a href="https://www.web3d.org/x3d/stylesheets/X3dToNodeJS.xslt" target="_blank">X3dToNodeJS.xslt</a>
stylesheet to create NodeJS source code from an <code>.x3d</code> scene.
</p>
* @author John Carlson
*/
function x3domflowers
/** Default constructor to create this object. */
()
{
/** The initialized model object, created within initialize() method. */
this.x3dModel = {};
this.initialize();
return this;
}
x3domflowers.prototype = {
/** Create and initialize the X3D model. */
initialize : function ()
{
this.x3dModel = (new autoclass.X3D()).setProfile("Immersive").setVersion("3.3")
.setHead((new autoclass.head())
.addComponent((new autoclass.component()).setName("Scripting").setLevel(1))
.addComponent((new autoclass.component()).setName("EnvironmentalEffects").setLevel(3))
.addComponent((new autoclass.component()).setName("Shaders").setLevel(1))
.addComponent((new autoclass.component()).setName("CubeMapTexturing").setLevel(1))
.addComponent((new autoclass.component()).setName("Texturing").setLevel(1))
.addComponent((new autoclass.component()).setName("Rendering").setLevel(1))
.addComponent((new autoclass.component()).setName("Grouping").setLevel(3))
.addComponent((new autoclass.component()).setName("Core").setLevel(1))
.addMeta((new autoclass.meta()).setName("title").setContent("x3domflowers.x3d"))
.addMeta((new autoclass.meta()).setName("creator").setContent("John Carlson"))
.addMeta((new autoclass.meta()).setName("description").setContent("5 or more prismatic flowers"))
.addMeta((new autoclass.meta()).setName("generator").setContent("X3D-Edit, https://savage.nps.edu/X3D-Edit"))
.addMeta((new autoclass.meta()).setName("identifier").setContent("https://coderextreme.net/X3DJSONLD/src/main/data/x3domflowers.x3d")))
.setScene((new autoclass.Scene())
.addChild((new autoclass.NavigationInfo()))
.addComments(" Images courtesy of Paul Debevec's Light Probe Image Gallery ")
.addChild((new autoclass.Background()).setBackUrl(new autoclass.MFString("\"../resources/images/all_probes/stpeters_cross/stpeters_back.png\" \"https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_back.png\"")).setBottomUrl(new autoclass.MFString("\"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png\" \"https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_bottom.png\"")).setFrontUrl(new autoclass.MFString("\"../resources/images/all_probes/stpeters_cross/stpeters_front.png\" \"https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_front.png\"")).setLeftUrl(new autoclass.MFString("\"../resources/images/all_probes/stpeters_cross/stpeters_left.png\" \"https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_left.png\"")).setRightUrl(new autoclass.MFString("\"../resources/images/all_probes/stpeters_cross/stpeters_right.png\" \"https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_right.png\"")).setTopUrl(new autoclass.MFString("\"../resources/images/all_probes/stpeters_cross/stpeters_top.png\" \"https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_top.png\"")))
.addChild((new autoclass.Group())
.addChild((new autoclass.ExternProtoDeclare()).setName("FlowerProto").setUrl(new autoclass.MFString("\"../data/flowerproto.json#FlowerProto\""))
.addField((new autoclass.field()).setName("vertex").setType("MFString").setAccessType("inputOutput"))
.addField((new autoclass.field()).setName("fragment").setType("MFString").setAccessType("inputOutput")))
.addChild((new autoclass.ProtoDeclare()).setName("flower")
.setProtoBody((new autoclass.ProtoBody())
.addChild((new autoclass.Group())
.addChild((new autoclass.ProtoInstance())
.addFieldValue((new autoclass.fieldValue()).setName("vertex").setValue("\"../shaders/x3dom_flowers_chromatic.vs\""))
.addFieldValue((new autoclass.fieldValue()).setName("fragment").setValue("\"../shaders/common.fs\""))))))
.addChild((new autoclass.ProtoInstance()))
.addChild((new autoclass.ProtoInstance()))
.addChild((new autoclass.ProtoInstance()))
.addChild((new autoclass.ProtoInstance()))
.addChild((new autoclass.ProtoInstance()))
.addChild((new autoclass.ProtoInstance()))));
},
// end of initialize() method
/** Provide a shallow copy of the X3D model.
* @return x3domflowers model
*/
getX3dModel : function()
{
return this.x3dModel;
},
/** Indicate X3DJSAIL validation results for this X3D model.
* @return validation results plus exception information, if any
*/
validateSelf : function()
{
var validationResult = "";
var exceptionResult = "";
try
{
this.initialize();
if ((this.getX3dModel() == null) || (this.getX3dModel().getHead() == null))
{
validationResult = "empty scene, nothing to validate. " + this.x3dModel.validate();
return validationResult;
}
validationResult += this.x3dModel.validate(); // walk entire tree to validate correctness
}
catch (e)
{
exceptionResult = e; // report exception failures, if any
}
if (exceptionResult === "" && validationResult === "")
return "success";
else
{
var returnMessage = "";
if (exceptionResult !== "" && validationResult !== "")
returnMessage += "\n*** ";
returnMessage += exceptionResult;
if (exceptionResult === "" && validationResult !== "")
returnMessage = "\n" + returnMessage; // skip line before meta tags, etc.
returnMessage += validationResult;
return returnMessage;
}
},
/** Default main() method provided for test purposes.
* @param argv input parameters
*/
main : function (argv)
{
var testObject = new x3domflowers();
console.log ("x3domflowers execution self-validation test results: " + testObject.validateSelf());
process.exit();
}
}
new x3domflowers().main();