本文整理汇总了Java中com.jme3.renderer.Camera.setFrustum方法的典型用法代码示例。如果您正苦于以下问题:Java Camera.setFrustum方法的具体用法?Java Camera.setFrustum怎么用?Java Camera.setFrustum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.jme3.renderer.Camera
的用法示例。
在下文中一共展示了Camera.setFrustum方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: updateLightCamera
import com.jme3.renderer.Camera; //导入方法依赖的package包/类
/**
* Updates the camera view direction and position based on the light
*/
public void updateLightCamera(Camera lightCam) {
if (target.getType() == Light.Type.Directional) {
DirectionalLight dl = (DirectionalLight) target;
lightCam.setParallelProjection(true);
lightCam.setLocation(Vector3f.ZERO);
lightCam.lookAtDirection(dl.getDirection(), Vector3f.UNIT_Y);
lightCam.setFrustum(-1, 1, -1, 1, 1, -1);
} else {
PointLight pl = (PointLight) target;
lightCam.setParallelProjection(false);
lightCam.setLocation(pl.getPosition());
// direction will have to be calculated automatically
lightCam.setFrustumPerspective(45, 1, 1, 300);
}
}
示例2: ProjectProcessor
import com.jme3.renderer.Camera; //导入方法依赖的package包/类
public ProjectProcessor(Node root, AssetManager assetManager) {
castCam = new Camera((int)128, (int)128);
castCam.setParallelProjection(true);
castCam.setFrustum(-1, 1, -1, 1, 1, -1);
//Textures\tex\magic\magic.jpg
// Textures\tex\sky\default\east.jpg
tex = assetManager.loadTexture("Textures/tex/magic/magic.jpg");
// tex = assetManager.loadTexture("Textures/tex/sky/default/east.jpg");
// tex = assetManager.loadTexture("Interface/item/face/female5.jpg");
mat = new Material(assetManager, "MatDefs/Projection/Projection.j3md");
QuadXYC quad = new QuadXYC(1,1);
projGeo = new Geometry("ProjGeo", quad);
projGeo.setLocalScale(width, height, 1);
Material debugMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
debugMat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
projGeo.setMaterial(debugMat);
projGeo.setCullHint(Spatial.CullHint.Always);
root.attachChild(projGeo);
}
示例3: setData
import com.jme3.renderer.Camera; //导入方法依赖的package包/类
@Override
public void setData(EffectData data) {
super.setData(data);
// TextureConstants.TEX_MAGIC default value for test.
texture = LuoYing.getAssetManager().loadTexture(data.getAsString("texture", AssetConstants.TEXTURE_MAGIC));
color = data.getAsColor("color");
projPos.set(data.getAsVector3f("projPos", projPos));
projDir.set(data.getAsVector3f("projDir", projDir)).normalizeLocal();
projUp.set(data.getAsVector3f("projUp", projUp)).normalizeLocal();
debug = data.getAsBoolean("debug", false);
// ---- 初始化,这些是固定的,不会动态改变
castCam = new Camera(1, 1);
castCam.setParallelProjection(true);
castCam.setFrustum(-1, 1, -1, 1, 1, -1);
projMat = new Material(LuoYing.getAssetManager(), AssetConstants.MATERIAL_PROJECTION);
projMat.setTexture("Texture", texture);
// 注:初始贴图颜色,如果效果包含有ColorAnim,则这个Color设置会受影响。
if (color != null) {
projMat.setColor("Color", color);
}
// 创建单位Box来作为投射计算和检测,这个检查体决定了是否进行投射。当这个
// 检测体在视角范围内以及与被投射体相交时(使用BoundingVolume检测),才进行
// 投射渲染。以避免浪费资源。
// 根据这个方式,有可能投射出来的效果并不在projGeo这个包含围盒内,所以尽量
// 让这个检测体靠近或包围住想要被投射的物体的所在面,这样看起来会比较合理。
projGeo = new Geometry("ProjGeo", new Box(0.5f, 0.5f, 0.5f));
projGeo.setCullHint(Spatial.CullHint.Always);
// 把projMat设置到当前effect中主要是为了使各种AnimColor动画能够控制这个
// 效果的颜色,当effect存在AnimColor的时候,AnimColor会在运行时去查找被
// 控制节点下的所有material,并动态控制这些material的颜色属性。
// 注:材质必须设置到Geometry中去,如果是给节点(Node)添加设置材质,则必须
// "先确认"节点下有子Geometry,否则setMaterial无效。
projGeo.setMaterial(projMat);
animNode.attachChild(projGeo);
}
示例4: updateShadowCamera
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);
}