Настройка материала для J3D вызывает нетекстурированный объект - PullRequest
0 голосов
/ 21 октября 2019

Я использую графический движок 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 и импорт найденных внутри банок)

Любая помощь приветствуется!

...