gpt4 book ai didi

javascript - 将 BoxGeometry 转换为球体

转载 作者:行者123 更新时间:2023-11-28 18:58:09 25 4
gpt4 key购买 nike

我有一个每个面都有不同纹理的盒子,我试图基于它创建一个四边形球体,在球体中使用相同的盒子纹理。目前我正在尝试按照这篇文章将立方体转换为球体: http://mathproofs.blogspot.com.br/2005/07/mapping-cube-to-sphere.html

我对 ThreeJS(或一般的 3D 编程)不太熟悉,所以我的第一个方法是尝试将建议的公式应用于几何顶点,更改其 x、y 和 z,但它只是减小了盒子

var geometry = new THREE.BoxGeometry(2, 2, 2);
// I'm omitting material/textures etc
var vertices = cube.geometry.vertices;
var sqrt = Math.sqrt;
cube.geometry.dynamic = true;

for (var i = 0; i < vertices.length; i++) {
var v = vertices[i];
var dx = v.x * sqrt(1.0 - ((v.y * v.y) / 2.0) - ((v.z * v.z) / 2.0) + ((v.y * v.y * v.z * v.z) / 3.0));
var dy = v.y * sqrt(1.0 - ((v.z * v.z) / 2.0) - ((v.x * v.x) / 2.0) + ((v.z * v.z * v.x * v.x) / 3.0));
var dz = v.z * sqrt(1.0 - ((v.x * v.x) / 2.0) - ((v.y * v.y) / 2.0) + ((v.x * v.x * v.y * v.y) / 3.0));
vertices[i].set(dx, dy, dz);
}
cube.geometry.verticesNeedUpdate = true;

有人知道我如何实现这一目标吗?

最佳答案

这个例子完成了你所追求的: http://threejs.org/examples/#canvas_geometry_panorama_fisheye

相关代码如下:

var geometry = new THREE.BoxGeometry( 300, 300, 300, 7, 7, 7 )

for ( var i = 0, l = geometry.vertices.length; i < l; i ++ ) {

var vertex = geometry.vertices[ i ];
vertex.normalize().multiplyScalar( 550 );

}

关于javascript - 将 BoxGeometry 转换为球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com