我在每個人臉上都有一個帶有不同紋理的框,我試圖在球體上使用相同的框紋理創建一個基於它的四個球體。目前我試圖將立方體轉換爲一個球體,下面這個帖子: http://mathproofs.blogspot.com.br/2005/07/mapping-cube-to-sphere.html將BoxGeometry轉換爲球體
我不是很熟悉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;
任何人都知道我該如何做到這一點?
我不知道three.js所,但是這顯示瞭如何用普通的OpenGL做到這一點: http://stackoverflow.com/questions/28831424/transform-cube-to-sphere-in-opengl。 –
你顯示你的代碼? –
我將用代碼 –