我想在游戏中重新创建一个立方体好奇心立方体里面的东西是什么?每边有6亿个迷你立方体。我不能使用纹理来模拟我的迷你立方体,因为当我点击它时,迷你立方体必须有视觉上的变化。
我尝试了一个BoxGeometry()
对象,其中有2个面作为迷你立方体
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer({
alpha: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
//There is my cube
var geometry = new THREE.BoxGeometry(20, 20, 20, 24494, 24494, 24494);
var material = new THREE.MeshBasicMaterial({
color: 0xfd59d7
});
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 100;
render();
function render() {
renderer.render(scene, camera);
}
那么我怎样才能创建一个每边有600万个迷你立方体的立方体,可以在笔记本上呈现?
答案 0 :(得分:2)
我可以向你保证,好奇号实际上并没有显示每边600,000,000个立方体制成的立方体。目前没有GPU能够以平滑的帧速率绘制600,000,000个立方体。如上所述,每侧有72亿个三角形。你可以同时看到一个立方体的3个面,所以30fps,即每秒6480亿个三角形。即使是NVidia 1080 GT(2017年接近顶级性能卡)也只能每秒绘制理论上110亿个三角形,这只是理论上的。实际上它永远不会达到那个速度。
最好在好奇号中,当你可以看到整个立方体时,它只显示一个带有纹理的12个多边形立方体,其中一个像素代表多于1个立方体(如果每边确实有600,000,000个立方体),因为它需要纹理24494x24494。 That's 5x to 10x what any phone can display in a single texture。是的,您可以将立方体的面细分为较小的多边形,每个多边形使用不同的纹理。这将需要2.3gig纹理PER侧或13.4gig内存用于整个立方体。手机没有13.4 gig的记忆。
如果它真的是每面6亿个立方体,你可以做的最好的就是谷歌地图,其中所有数据都存储在服务器上,各种表示都流式传输给用户。当用户缩小以查看整个立方体时,会显示一些表示每边1024x1024(100万像素)的图像,当您放大显示较小部分立方体的不同表示时,会下载并显示。