0

モデルに衝突形状を配置しようとしています。しかし、ゲームを開始するたびに、NegativeArraySizeException が発生します。

private void createSoundBit(float x, float y, float z)
    {
        Spatial npc1 = assetManager.loadModel("Models/sound/sound.j3o");
        npcNode.attachChild(npc1);
        CollisionShape noteshape = CollisionShapeFactory.createDynamicMeshShape(npc1);
        npcRigid = new RigidBodyControl(noteshape,123.0f);
        npcRigid.setFriction(0f);
        npcRigid.setMass(60f);
        npcRigid.setPhysicsLocation(new Vector3f(x,y,z));
        collmanager = new CollManager();
        getPhysicsSpace().addCollisionListener(collmanager);

        npc1.addControl(npcRigid);
        bulletAppState.getPhysicsSpace().add(npcRigid);
        rootNode.attachChild(npcNode);
    }

なぜそれが起こるのかわかりません

スタックトレース:

java.lang.NegativeArraySizeException
    at com.jme3.bullet.collision.shapes.HullCollisionShape.getPoints(HullCollisionShape.java:71)
    at com.jme3.bullet.collision.shapes.HullCollisionShape.<init>(HullCollisionShape.java:24)
    at com.jme3.bullet.util.CollisionShapeFactory.createSingleDynamicMeshShape(CollisionShapeFactory.java:241)
    at com.jme3.bullet.util.CollisionShapeFactory.createCompoundShape(CollisionShapeFactory.java:112)
    at com.jme3.bullet.util.CollisionShapeFactory.createCompoundShape(CollisionShapeFactory.java:94)
    at com.jme3.bullet.util.CollisionShapeFactory.createDynamicMeshShape(CollisionShapeFactory.java:188)
    at Main.createSoundBit(Main.java:206)
    at Main.simpleInitApp(Main.java:83)
    at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:225)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:207)
    at java.lang.Thread.run(Thread.java:722)
4

1 に答える 1

0

私にとっては、ファイルsound.j3oが破損しているか、jmonkeyengineにバグがあるという2つの原因のいずれかである可能性があります。他のファイルをロードして、何が起こっているかを確認してください。問題があるソースの一部:

FloatBuffer vertices = mesh.getFloatBuffer(Type.Position);
vertices.rewind();
int components = mesh.getVertexCount() * 3;
float[] pointsArray = new float[components];
// ...

mesh.getVertexCount()したがって、負の値が返されたように見えます。

于 2013-01-26T20:17:02.283 に答える