日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java游戏怎么导入jme3,Java Camera.getProjectionMatrix方法代码示例

發布時間:2025/4/5 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java游戏怎么导入jme3,Java Camera.getProjectionMatrix方法代码示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

import com.jme3.renderer.Camera; //導入方法依賴的package包/類

/**

* Updates the shadow camera to properly contain the given

* points (which contain the eye camera frustum corners)

*

* @param occluders

* @param lightCam

* @param points

*/

public static void updateShadowCamera(Camera shadowCam, Vector3f[] points) {

boolean ortho = shadowCam.isParallelProjection();

shadowCam.setProjectionMatrix(null);

if (ortho) {

shadowCam.setFrustum(-1, 1, -1, 1, 1, -1);

} else {

shadowCam.setFrustumPerspective(45, 1, 1, 150);

}

Matrix4f viewProjMatrix = shadowCam.getViewProjectionMatrix();

Matrix4f projMatrix = shadowCam.getProjectionMatrix();

BoundingBox splitBB = computeBoundForPoints(points, viewProjMatrix);

Vector3f splitMin = splitBB.getMin(null);

Vector3f splitMax = splitBB.getMax(null);

// splitMin.z = 0;

// Create the crop matrix.

float scaleX, scaleY, scaleZ;

float offsetX, offsetY, offsetZ;

scaleX = 2.0f / (splitMax.x - splitMin.x);

scaleY = 2.0f / (splitMax.y - splitMin.y);

offsetX = -0.5f * (splitMax.x + splitMin.x) * scaleX;

offsetY = -0.5f * (splitMax.y + splitMin.y) * scaleY;

scaleZ = 1.0f / (splitMax.z - splitMin.z);

offsetZ = -splitMin.z * scaleZ;

Matrix4f cropMatrix = new Matrix4f(scaleX, 0f, 0f, offsetX,

0f, scaleY, 0f, offsetY,

0f, 0f, scaleZ, offsetZ,

0f, 0f, 0f, 1f);

Matrix4f result = new Matrix4f();

result.set(cropMatrix);

result.multLocal(projMatrix);

shadowCam.setProjectionMatrix(result);

}

總結

以上是生活随笔為你收集整理的java游戏怎么导入jme3,Java Camera.getProjectionMatrix方法代码示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。