[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