jMonkeyEngine3 (jME3) Уровень детализации для местности - PullRequest
0 голосов
/ 19 ноября 2011

Я пытаюсь выполнить генерацию рельефа в jMonkeyEnging и следовал учебному пособию (http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_terrain), но столкнулся с небольшой проблемой. Наконец, кусок кода в методе simpleInitApp (уровень детализации), яя получаю сообщения об ошибках:

1. Cannot Find Symbol: class list
2. Cannot Find Symbol: class camera
3. Cannot Find Symbol: class arrayList

при удалении кода уровня детализации выдается ошибка при запуске:

1. SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.NullPointerException
    at mygame.Main.simpleInitApp(Main.java:35)
        at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:231)
    at         com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:129)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:205)
    at java.lang.Thread.run(Thread.java:722)

Что я делаю неправильно, этого нет в руководстве(или мой код ниже)

    package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.material.Material;
    import com.jme3.terrain.geomipmap.TerrainLodControl;
    import com.jme3.terrain.heightmap.AbstractHeightMap;
    import com.jme3.terrain.geomipmap.TerrainQuad;
    import com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator;
    import com.jme3.terrain.heightmap.HillHeightMap; // for exercise 2
    import com.jme3.terrain.heightmap.ImageBasedHeightMap;
    import com.jme3.texture.Texture;
    import com.jme3.texture.Texture.WrapMode;
    import jme3tools.converters.ImageToAwt;

    /**
     * test
     * @author Me
     */
    public class Main extends SimpleApplication {

        public static void main(String[] args) {
            Main app = new Main();
            app.start();
        }

        private TerrainQuad terrain;
        Material mat_terrain;

        @Override
        public void simpleInitApp() {
            flyCam.setMoveSpeed(50);

            //add grass to the mat_terrain
            Texture grass = assetManager.loadTexture("Textures/grass.jpg");
            mat_terrain.setTexture("tex1", grass);
            mat_terrain.setFloat("tex1Scale", 64f);

            //add dirt to the mat_terrain
            Texture dirt = assetManager.loadTexture("Textures/dirt.jpg");
            mat_terrain.setTexture("tex2", dirt);
            mat_terrain.setFloat("tex2Scale", 32f);

            //add roads to the mat_terrain
            Texture road = assetManager.loadTexture("Textures/road.jpg");
            mat_terrain.setTexture("tex2", road);
            mat_terrain.setFloat("tex3Scale", 128f);

            //deal with the generation
            AbstractHeightMap heightMap = null;
            HillHeightMap heightmap = null;
            try {
                heightmap = new HillHeightMap(513, 1000, 50, 100, (byte) 3);
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            //create the world
            int patchSize = 65;
            terrain = new TerrainQuad("my terrain", patchSize, 513,                    heightmap.getHeightMap());

            //material, position, scale

            terrain.setMaterial(mat_terrain);
            terrain.setLocalTranslation(0, -100, 0);
            terrain.setLocalScale(2f, 1f, 2f);
            rootNode.attachChild(terrain);

            //LOD
            List<Camera> cameras = new ArrayList<Camera>();
            cameras.add(getCamera());
            TerrainLodControl control = new TerrainLodControl(terrain, cameras);
            terrain.addControl(control);
        }
    }

1 Ответ

0 голосов
/ 01 мая 2012

Вам необходимо импортировать Camera (из пакета рендеринга jME3), а также List и ArrayList (из java.util).

Вам также лучше публиковать любые вопросы, связанные с jME, на форуме по адресуhttp://jmonkeyengine.org/forum

...