[x3d-public] X3DJSAIL updates
Don Brutzman
brutzman at nps.edu
Sun Dec 17 08:43:55 PST 2017
On 12/16/2017 11:47 PM, John Carlson wrote:
> $ jjs -cp ../../java/jars/X3DJSAIL.3.3.full.jar HelloWorldProgramOutput.js
>
> HelloWorldProgramOutput.js:128 TypeError: new AppearanceObject().setDEF("TestAppearance1").setProtoInstance is not a function
correct, .setProtoInstance is not a function
see AppearanceObject javadoc for provided methods. You won't find any setProtoInstance() methods anywhere, rather look for setMaterial(new ProtoInstanceObject()) methods.
For instance,
====================================================
http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Shape/AppearanceObject.html
http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Shape/AppearanceObject.html#setMaterial-org.web3d.x3d.jsail.Core.ProtoInstanceObject-
public AppearanceObject setMaterial(ProtoInstanceObject newProtoInstanceNode)
Assign ProtoInstance to material field; Warning: ProtoInstance must match acceptable node type X3DMaterialNode.
====================================================
See excerpted examples in HelloWorldProgram.java
ProtoInstanceObject ArtDeco01ProtoInstance = new ProtoInstanceObject ().setName("ArtDeco01Material")
.setContainerField ("material");
ProtoInstanceObject ArtDeco02ProtoInstance = new ProtoInstanceObject ().setName("ArtDeco02Material")
.setDEF ("ArtDeco02MaterialDEF")
.setContainerField ("material");
// ...
ShapeObject testShape1 = new ShapeObject("TestShape1"); // constructor also initializes DEF
ShapeObject testShape2 = new ShapeObject("TestShape2");
ShapeObject testShape3 = new ShapeObject("TestShape3");
AppearanceObject testAppearance1 = (new AppearanceObject("TestAppearance1")).setMaterial(new MaterialObject("TestToBeOverridden1"));
AppearanceObject testAppearance2 = (new AppearanceObject("TestAppearance2")).setMaterial(new MaterialObject("TestToBeOverridden2"));
AppearanceObject testAppearance3 = (new AppearanceObject("TestAppearance3")).setMaterial(new MaterialObject("TestToBeOverridden3"));
testAppearance1.addComments("ArtDeco01Material prototype goes here...").setMaterial(ArtDeco01ProtoInstance); // successful use of overloaded, specially typed method
testAppearance2.addComments("ArtDeco02Material prototype goes here...").setMaterial(ArtDeco02ProtoInstance); // successful use of overloaded, specially typed method
// test ProtoInstance USE
testAppearance3.addComments("ArtDeco02Material ProtoInstance USE goes here...");
testAppearance3.setMaterial(new ProtoInstanceObject().setUSE(ArtDeco02ProtoInstance.getDEF())
.setContainerField ("material"));
testShape1.setAppearance(testAppearance1);
testShape2.setAppearance(testAppearance2);
testShape3.setAppearance(testAppearance3);
testShape1.setGeometry(new SphereObject().setRadius(0.001f)); // provide initial children to silence superflous Schematron warnings
testShape2.setGeometry(new ConeObject().setHeight(0.001f).setBottomRadius(0.001f));
testShape3.setGeometry(new CylinderObject().setHeight(0.001f).setRadius(0.001f));
scene.addChildren(testShape1);
scene.addChildren(testShape2);
scene.addChildren(testShape3);
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
More information about the x3d-public
mailing list