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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值