List of usage examples for javax.media.j3d TextureAttributes DECAL
int DECAL
To view the source code for javax.media.j3d TextureAttributes DECAL.
Click Source Link
From source file:MultiTextureTest.java
public BranchGroup createSceneGraph() { // Create the root of the branch graph BranchGroup objRoot = new BranchGroup(); // Create a Transformgroup to scale all objects so they // appear in the scene. TransformGroup objScale = new TransformGroup(); Transform3D t3d = new Transform3D(); t3d.setScale(0.4);//from www .j a va2 s.c o m objScale.setTransform(t3d); objRoot.addChild(objScale); TransformGroup objTrans = new TransformGroup(); //write-enable for behaviors objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); objTrans.setCapability(TransformGroup.ENABLE_PICK_REPORTING); objScale.addChild(objTrans); Appearance ap = new Appearance(); // load textures TextureAttributes texAttr1 = new TextureAttributes(); texAttr1.setTextureMode(TextureAttributes.DECAL); TextureAttributes texAttr2 = new TextureAttributes(); texAttr2.setTextureMode(TextureAttributes.MODULATE); TextureLoader tex = new TextureLoader(stoneImage, new String("RGB"), this); if (tex == null) return null; stoneTex = tex.getTexture(); tex = new TextureLoader(skyImage, new String("RGB"), this); if (tex == null) return null; skyTex = tex.getTexture(); lightTex = createLightMap(); textureUnitState[0] = new TextureUnitState(stoneTex, texAttr1, null); textureUnitState[0].setCapability(TextureUnitState.ALLOW_STATE_WRITE); textureUnitState[1] = new TextureUnitState(lightTex, texAttr2, null); textureUnitState[1].setCapability(TextureUnitState.ALLOW_STATE_WRITE); ap.setTextureUnitState(textureUnitState); //Create a Box Box BoxObj = new Box(1.5f, 1.5f, 0.8f, Box.GENERATE_NORMALS | Box.GENERATE_TEXTURE_COORDS, ap, 2); // add it to the scene graph. objTrans.addChild(BoxObj); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0); //Shine it with two lights. Color3f lColor1 = new Color3f(0.7f, 0.7f, 0.7f); Color3f lColor2 = new Color3f(0.2f, 0.2f, 0.1f); Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, -1.0f); Vector3f lDir2 = new Vector3f(0.0f, 0.0f, -1.0f); DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1); DirectionalLight lgt2 = new DirectionalLight(lColor2, lDir2); lgt1.setInfluencingBounds(bounds); lgt2.setInfluencingBounds(bounds); objScale.addChild(lgt1); objScale.addChild(lgt2); // Let Java 3D perform optimizations on this scene graph. objRoot.compile(); return objRoot; }
From source file:InterleavedTest.java
BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
// Set up attributes to render lines
app = new Appearance();
app.setCapability(Appearance.ALLOW_TEXTURE_UNIT_STATE_WRITE);
transp = new TransparencyAttributes();
transp.setTransparency(0.5f);/* w ww. ja va 2s . c o m*/
transp.setCapability(TransparencyAttributes.ALLOW_MODE_WRITE);
transp.setTransparencyMode(TransparencyAttributes.NONE);
app.setTransparencyAttributes(transp);
// load textures
TextureAttributes texAttr1 = new TextureAttributes();
texAttr1.setTextureMode(TextureAttributes.DECAL);
TextureAttributes texAttr2 = new TextureAttributes();
texAttr2.setTextureMode(TextureAttributes.MODULATE);
TextureLoader tex = new TextureLoader(texImage1, new String("RGB"), this);
if (tex == null)
return null;
tex1 = tex.getTexture();
tex = new TextureLoader(texImage2, new String("RGB"), this);
if (tex == null)
return null;
tex2 = tex.getTexture();
textureUnitState[0] = new TextureUnitState(tex1, texAttr1, null);
textureUnitState[1] = new TextureUnitState(tex2, texAttr2, null);
tetraRegular = createGeometry(1);
tetraStrip = createGeometry(2);
tetraIndexed = createGeometry(3);
tetraIndexedStrip = createGeometry(4);
geoArrays[0] = tetraRegular;
geoArrays[1] = tetraStrip;
geoArrays[2] = tetraIndexed;
geoArrays[3] = tetraIndexedStrip;
shape = new Shape3D(tetraRegular, app);
shape.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
Transform3D t = new Transform3D();
// move the object upwards
t.set(new Vector3f(0.0f, 0.3f, 0.0f));
// rotate the shape
Transform3D temp = new Transform3D();
temp.rotX(Math.PI / 4.0d);
t.mul(temp);
temp.rotY(Math.PI / 4.0d);
t.mul(temp);
// Shrink the object
t.setScale(0.6);
TransformGroup trans = new TransformGroup(t);
trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objRoot.addChild(trans);
trans.addChild(shape);
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
// Set up the global lights
Color3f lColor1 = new Color3f(0.7f, 0.7f, 0.7f);
Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, -1.0f);
Color3f alColor = new Color3f(0.2f, 0.2f, 0.2f);
AmbientLight aLgt = new AmbientLight(alColor);
aLgt.setInfluencingBounds(bounds);
DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1);
lgt1.setInfluencingBounds(bounds);
objRoot.addChild(aLgt);
objRoot.addChild(lgt1);
// Let Java 3D perform optimizations on this scene graph.
objRoot.compile();
return objRoot;
}
From source file:InterleavedNIOBuffer.java
BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
// Set up attributes to render lines
app = new Appearance();
app.setCapability(Appearance.ALLOW_TEXTURE_UNIT_STATE_WRITE);
transp = new TransparencyAttributes();
transp.setTransparency(0.5f);/*w w w . j a v a 2 s .co m*/
transp.setCapability(TransparencyAttributes.ALLOW_MODE_WRITE);
transp.setTransparencyMode(TransparencyAttributes.NONE);
app.setTransparencyAttributes(transp);
// load textures
TextureAttributes texAttr1 = new TextureAttributes();
texAttr1.setTextureMode(TextureAttributes.DECAL);
TextureAttributes texAttr2 = new TextureAttributes();
texAttr2.setTextureMode(TextureAttributes.MODULATE);
TextureLoader tex = new TextureLoader(texImage1, new String("RGB"), this);
if (tex == null)
return null;
tex1 = tex.getTexture();
tex = new TextureLoader(texImage2, new String("RGB"), this);
if (tex == null)
return null;
tex2 = tex.getTexture();
textureUnitState[0] = new TextureUnitState(tex1, texAttr1, null);
textureUnitState[1] = new TextureUnitState(tex2, texAttr2, null);
createInterleavedBuffers();
tetraRegular = createGeometry(1);
tetraStrip = createGeometry(2);
tetraIndexed = createGeometry(3);
tetraIndexedStrip = createGeometry(4);
geoArrays[0] = tetraRegular;
geoArrays[1] = tetraStrip;
geoArrays[2] = tetraIndexed;
geoArrays[3] = tetraIndexedStrip;
shape = new Shape3D(tetraRegular, app);
shape.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
Transform3D t = new Transform3D();
// move the object upwards
t.set(new Vector3f(0.0f, 0.3f, 0.0f));
// rotate the shape
Transform3D temp = new Transform3D();
temp.rotX(Math.PI / 4.0d);
t.mul(temp);
temp.rotY(Math.PI / 4.0d);
t.mul(temp);
// Shrink the object
t.setScale(0.6);
TransformGroup trans = new TransformGroup(t);
trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objRoot.addChild(trans);
trans.addChild(shape);
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
// Set up the global lights
Color3f lColor1 = new Color3f(0.7f, 0.7f, 0.7f);
Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, -1.0f);
Color3f alColor = new Color3f(0.2f, 0.2f, 0.2f);
AmbientLight aLgt = new AmbientLight(alColor);
aLgt.setInfluencingBounds(bounds);
DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1);
lgt1.setInfluencingBounds(bounds);
objRoot.addChild(aLgt);
objRoot.addChild(lgt1);
// Let Java 3D perform optimizations on this scene graph.
objRoot.compile();
return objRoot;
}
From source file:TexCoordTest.java
void createAppearance(double yMaxHeight) { // create an Appearance and assign a Material m_Appearance = new Appearance(); m_Appearance.setCapability(Appearance.ALLOW_TEXGEN_WRITE); Color3f black = new Color3f(0, 0.2f, 0); Color3f objColor = new Color3f(0.1f, 0.7f, 0.2f); m_Appearance.setMaterial(new Material(objColor, black, objColor, black, 0.8f)); // load the texture image TextureLoader texLoader = new TextureLoader("stripes.gif", Texture.RGB, this); // clamp the coordinates in the S dimension, that way they // will not wrap when the calculated texture coordinate falls outside // the range 0 to 1. When the texture coordinate is outside this range // no texture coordinate will be used Texture tex = texLoader.getTexture(); tex.setBoundaryModeS(Texture.CLAMP); // assign the texute image to the appearance m_Appearance.setTexture(tex);/*from w w w . j a v a 2 s . co m*/ // create the TexCoordGeneration object. // we are only using 1D texture coordinates (S) - texture coordinates // are calculated from a vertex's distance from the Y = 0 plane // the 4th parameter to the Vector4f is the distance in *texture // coordinates* // that we shift the texture coordinates by (i.e. Y = 0 corresponds to S // = 0.5) TexCoordGeneration texGen = new TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR, TexCoordGeneration.TEXTURE_COORDINATE_2, new Vector4f(0, (float) (1.0 / (2 * yMaxHeight)), 0, 0.5f), new Vector4f(0, 0, 0, 0), new Vector4f(0, 0, 0, 0)); // create our "non-live" TexCoordGeneration object so we // can update the "genMode" parameter after we go live. m_TexGen = (TexCoordGeneration) texGen.cloneNodeComponent(true); // assign the TexCoordGeneration to the Appearance m_Appearance.setTexCoordGeneration(texGen); // we just glue the texture image to the surface, we are not // blending or modulating the texture image based on material // attributes. You can experiment with MODULATE or BLEND. TextureAttributes texAttribs = new TextureAttributes(); texAttribs.setTextureMode(TextureAttributes.DECAL); m_Appearance.setTextureAttributes(texAttribs); }
From source file:J3dSwingFrame.java
/** * Construct the default appearance.//from ww w . ja v a 2s .c o m */ private void constructAppearance() { appearance = new Appearance(); TextureAttributes tex_attr = new TextureAttributes(); tex_attr.setTextureMode(TextureAttributes.DECAL); tex_attr.setPerspectiveCorrectionMode(TextureAttributes.FASTEST); appearance.setTextureAttributes(tex_attr); ColoringAttributes col_attr = new ColoringAttributes(); col_attr.setShadeModel(ColoringAttributes.SHADE_GOURAUD); appearance.setColoringAttributes(col_attr); PolygonAttributes rend_attr = new PolygonAttributes(); rend_attr.setCullFace(PolygonAttributes.CULL_NONE); // uncomment this if you want it to display in line draw mode // rend_attr.setPolygonMode(PolygonAttributes.POLYGON_LINE); appearance.setPolygonAttributes(rend_attr); Material mat = new Material(); // Color3f col = new Color3f(1, 0, 0); // mat.setEmissiveColor(col); appearance.setMaterial(mat); setAppearance(appearance); }
From source file:AppearanceTest.java
public void onDECAL() { getTextureAttributes().setTextureMode(TextureAttributes.DECAL); }
From source file:AppearanceExplorer.java
TextureAttributesEditor(TextureAttributes init) {
super(BoxLayout.Y_AXIS);
textureAttr = init;// w w w . ja v a2 s .c o m
mode = textureAttr.getTextureMode();
pcMode = textureAttr.getPerspectiveCorrectionMode();
textureAttr.getTextureBlendColor(blendColor);
String[] modeNames = { "REPLACE", "MODULATE", "DECAL", "BLEND", };
int[] modeValues = { TextureAttributes.REPLACE, TextureAttributes.MODULATE, TextureAttributes.DECAL,
TextureAttributes.BLEND, };
IntChooser modeChooser = new IntChooser("Mode:", modeNames, modeValues, mode);
modeChooser.addIntListener(new IntListener() {
public void intChanged(IntEvent event) {
mode = event.getValue();
textureAttr.setTextureMode(mode);
}
});
add(modeChooser);
Color4fEditor blendColorEditor = new Color4fEditor("Blend Color", blendColor);
blendColorEditor.addColor4fListener(new Color4fListener() {
public void colorChanged(Color4fEvent event) {
event.getValue(blendColor);
textureAttr.setTextureBlendColor(blendColor);
}
});
add(blendColorEditor);
String[] pcModeNames = { "NICEST", "FASTEST", };
int[] pcModeValues = { TextureAttributes.NICEST, TextureAttributes.FASTEST, };
IntChooser pcModeChooser = new IntChooser("Perspective Correction:", pcModeNames, pcModeValues, pcMode);
pcModeChooser.addIntListener(new IntListener() {
public void intChanged(IntEvent event) {
pcMode = event.getValue();
textureAttr.setPerspectiveCorrectionMode(pcMode);
}
});
add(pcModeChooser);
}