package java3d; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; public class Material extends NodeComponent { float diffuseR = 1.0f; float diffuseG = 1.0f; float diffuseB = 1.0f; float ambientR = 0.2f; float ambientG = 0.2f; float ambientB = 0.2f; float specularR = 1.0f; float specularG = 1.0f; float specularB = 1.0f; float emissiveR = 0.0f; float emissiveG = 0.0f; float emissiveB = 0.0f; float shininess = 64.0f; float[] diffuse = null; float[] ambient = null; float[] specular = null; float[] emissive = null; public Material() { setDiffuseColor(1.0f, 1.0f, 1.0f); setAmbientColor(0.2f, 0.2f, 0.2f); setSpecularColor(1.0f, 1.0f, 1.0f); setEmissiveColor(0.0f, 0.0f, 0.0f); setShininess(64.0f); } public void setDiffuseColor(float r, float g, float b) { this.diffuseR = r; this.diffuseG = g; this.diffuseB = b; diffuse = new float[]{r, g ,b, 1.0f}; } public void setAmbientColor(float r, float g, float b) { this.ambientR = r; this.ambientG = g; this.ambientB = b; ambient = new float[]{r, g ,b, 1.0f}; } public void setSpecularColor(float r, float g, float b) { this.specularR = r; this.specularG = g; this.specularB = b; specular = new float[]{r, g ,b, 1.0f}; } public void setEmissiveColor(float r, float g, float b) { this.emissiveR = r; this.emissiveG = g; this.emissiveB = b; emissive = new float[]{r, g ,b, 1.0f}; } public void setShininess(float shininess) { this.shininess = shininess; } @Override public NodeComponent cloneNodeComponent() { Material m = new Material(); m.setDiffuseColor(diffuseR, diffuseG, diffuseB); m.setAmbientColor(ambientR, ambientG, ambientB); m.setSpecularColor(specularR, specularG, specularB); m.setEmissiveColor(emissiveR, emissiveG, emissiveB); m.setShininess(shininess); return m; } }