首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BabylonJs目标对象消失

BabylonJs目标对象消失
EN

Stack Overflow用户
提问于 2016-04-15 15:32:26
回答 1查看 1.7K关注 0票数 0

在BabylonJs中,如果相机被放置在离物体一定的距离,那么它的距离与物体的大小成正比,整个场景应该大致相同。

我创建了这个简单的测试(可以复制并粘贴到http://www.babylonjs-playground.com/中运行),它生成一个大小为1,000的球体的场景,从(0,0,10000)处的相机可以看到:

代码语言:javascript
复制
var createScene = function () {

    // This creates a basic Babylon Scene object (non-mesh)
    var scene = new BABYLON.Scene(engine);

    // This creates and positions a free camera (non-mesh)
    var camera = new BABYLON.FreeCamera("camera", new BABYLON.Vector3(0, 0, 10000), scene);

    // This targets the camera to scene origin
    camera.setTarget(BABYLON.Vector3.Zero());

    // This attaches the camera to the canvas
    camera.attachControl(canvas, true);

    // This creates a light, aiming 0,1,0 - to the sky (non-mesh)
    var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(1, -1, -1), scene);

    // Default intensity is 1. Let's dim the light a small amount
    light.intensity = 0.7;

    // Our built-in 'sphere' shape. Params: name, subdivs, size, scene
    var sphere = BABYLON.Mesh.CreateSphere("Sphere", 16, 1000, scene);  

    return scene;
};

请注意,如果球体的大小减小到100,摄影机的距离也相应减小(因此摄影机的位置为(0,0,1000)),场景看起来仍然是一样的。

如果实验重复减少另一个因子,即球体的大小减少到10,相机位置减少到(0,0,100),仍然没有任何变化。

到现在为止还好。但是如果我试图增加球体的大小和距离,那么一切都会消失:如果球体的大小是10000,摄影机位置是(0,0,100000),场景看起来是空的。为什么?有可能改变这种行为吗?多么?我遗漏了什么?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-04-16 01:10:20

这很可能与相机的“剪裁平面”有关。在3D图形中,通常会限制相机可以“观察”的距离(沿着z轴),这样它就不必在背景中“绘制”太远的对象。

通过将以下内容添加到代码中,可以更改此值以延长相机的绘制距离:

camera.maxZ = 100000;

要可视化这一点,还可以在球体下面添加一个平面几何体。然后,可以将maxZ属性设置为不同的值,并查看它在何处停止绘制平面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36640916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档