Я использую графический движок Java3D (не спрашивайте), и при настройке некоторых основных функций я обнаружил странную ошибку / ошибку в моем коде.
При создании куба в J3D необходимо указатьматериал и показ материала включения - но при запуске программы все, что я когда-либо получаю, это this
Вот проблемный класс:
import javax.media.j3d.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import javax.vecmath.*;
public class Main {
SimpleUniverse universe = new SimpleUniverse();
BranchGroup group = new BranchGroup();
public Main() {
createCube(0.4f, -0.1f, 0.2f, 0.3f, 0.2f, 0.2f, new Material(new Color3f( .5f, .5f, .5f),new Color3f( .5f, .5f, .5f),new Color3f( .5f, .5f, .5f),new Color3f( .5f, .5f, .5f),0.1f));
createDirectionalLight(0.4f, 0.1f, 0.1f, new Color3f(1f, 1f, 1f), new Vector3f(4.0f, -7.0f, -12.0f), 1f);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(group);
}
public static void main( String[] args ) {
System.out.println("Hello System!");
System.setProperty("sun.awt.noerasebackground", "true");
new Main();
}
private void createDirectionalLight(float x, float y, float z, Color3f color, Vector3f direction, float size) {
TransformGroup transformGroup = new TransformGroup();
Transform3D transform3D = new Transform3D();
Vector3f vector = new Vector3f(x, y, z);
DirectionalLight light = new DirectionalLight(color, direction);
BoundingSphere bounds = new BoundingSphere(new Point3d(x, y, z), size);
light.setInfluencingBounds(bounds);
transform3D.setTranslation(vector);
transformGroup.setTransform(transform3D);
transformGroup.addChild(light);
group.addChild(transformGroup);
}
private void createCube(float x, float y, float z, float sizeX, float sizeY, float sizeZ, Material material) {
Appearance appearance = new Appearance();
appearance.setMaterial(material);
TransformGroup transformGroup = new TransformGroup();
Transform3D transform3D = new Transform3D();
Vector3f vector = new Vector3f(x, y, z);
Box cube = new Box(sizeX, sizeY, sizeZ, appearance);
cube.setCapability(Box.ENABLE_APPEARANCE_MODIFY);
transform3D.setTranslation(vector);
transformGroup.setTransform(transform3D);
transformGroup.addChild(cube);
group.addChild(transformGroup);
}
}
(Для запуска вышеупомянутогокод, необходимый для импорта банок из здесь , распаковка zip и импорт найденных внутри банок)
Любая помощь приветствуется!