当前位置: 首页>>代码示例>>Java>>正文


Java Camera.setFrustum方法代码示例

本文整理汇总了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);
    }
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:19,代码来源:ShadowCamera.java

示例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);
        
    }
 
开发者ID:huliqing,项目名称:LuoYing,代码行数:23,代码来源:ProjectProcessor.java

示例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);
}
 
开发者ID:huliqing,项目名称:LuoYing,代码行数:41,代码来源:ProjectionEffect.java

示例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);
    }
 
开发者ID:mleoking,项目名称:PhET,代码行数:52,代码来源:ShadowUtil.java


注:本文中的com.jme3.renderer.Camera.setFrustum方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。