2017-01-20 11 views
0

私はゲームを作っていますが、現在私のオーディオリスナーを働かせています。私はすべてをやったし、私はいくつかの音を聞くこともできますが、私のカメラの向き(定義されたクラス)は私のオーディオと一緒に働いていません。 Iveはこれを使って自分自身を実装しようとしました:ピッチヨーからのOpenALリスナーの方向性とロール

AL10.alListener3f(AL10.AL_ORIENTATION , cam.getPitch(),cam.getYaw(), cam.getRoll()); 

しかし、そのリソースは機能しませんでした。私のゲームの仕事をするために私は何ができますか?

OpenGLバージョン2.0(OpenAlバージョン2.0だと思います) ありがとうございました!

編集: 答えが理解できたら、それをフロートバッファーに入れる必要があります。だから、これは私が、ピッチとヨーと私のカメラのビュー行列を作成する方法である:

viewMatrix.setIdentity(); 
    Matrix4f.rotate((float) Math.toRadians(pitch), rotateX, viewMatrix, viewMatrix); 
    Matrix4f.rotate((float) Math.toRadians(yaw), rotateZ, viewMatrix, viewMatrix); 
    Vector3f negativeCameraPos = new Vector3f(-position.x, -position.y, -position.z); 
    Matrix4f.translate(negativeCameraPos, viewMatrix, viewMatrix); 

と私は現在、このisueに使用する方法:

ByteBuffer bb = ByteBuffer.allocateDirect(6 * 4); 
    bb.order(ByteOrder.nativeOrder()); 
    FloatBuffer listenerOrientation = bb.asFloatBuffer(); 
    listenerOrientation.put(0, cam.getViewMatrix().m01); 
    listenerOrientation.put(1, cam.getViewMatrix().m02); 
    listenerOrientation.put(2, cam.getViewMatrix().m03); 
    listenerOrientation.put(3, cam.getViewMatrix().m11); 
    listenerOrientation.put(4, cam.getViewMatrix().m12); 
    listenerOrientation.put(5, cam.getViewMatrix().m13); 

    AL10.alListener(AL10.AL_ORIENTATION, listenerOrientation); 
    AL10.alListener3f(AL10.AL_POSITION, cam.getPosition().x, cam.getPosition().y, cam.getPosition().z); 

答えて

1

あなたはビューベクトルを計算する必要があるとあなたのピッチ/ヨー/ロール表現からのアップベクトル。ほとんどの場合、カメラマトリックスの2行目と3行目(または列)に格納されているので、すでにデータがあります。

listenerOrientation.put(0, lookX); 
listenerOrientation.put(1, lookY); 
listenerOrientation.put(2, lookZ); 
listenerOrientation.put(3, upX); 
listenerOrientation.put(4, upY); 
listenerOrientation.put(5, upZ); 

AL10.alListener(AL10.AL_ORIENTATION, listenerOrientation); 

出典:
https://www.openal.org/documentation/OpenAL_Programmers_Guide.pdfhttp://forum.lwjgl.org/index.php?topic=2631.0

+0

まあそれをmaby」は、この値を使用して

、あなたはよりpname = AL10.AL_ORIENTATIONと、このコードサンプルに似た二つのベクトルを含むvalueで、alListener(int pname, java.nio.FloatBuffer value)メソッドを呼び出すことができますカメラのビューマトリックスを自分の編集でどのように作成するかを示すのに役立ちます – Caspermartijn

関連する問題