简体   繁体   English

如何在Three.js中创建鸡蛋网格?

[英]How to create an egg mesh in Three.js?

I'm trying to create an egg mesh in Three.js. 我正在尝试在Three.js中创建一个鸡蛋网格。 I've written the code below, using a LatheGeometry, but I'm missing the right equation. 我已经使用LatheGeometry编写了以下代码,但是我缺少正确的方程式。 Can anyone help? 有人可以帮忙吗?

var r0 = 40
var r1 = r0/4;
var inc = Math.PI/r0;
points = [];
points.push( new THREE.Vector2( 0.0001, -r0/2 ) );
for ( var i = 0; i <= r0; i ++ ) {
    var def = i<r0/2 ? 0 : r1*Math.sin((i-r0/2)*inc);
    points.push( new THREE.Vector2( Math.sqrt(r0*i-i*i), i+def-r0/2 ) );
}
points.push( new THREE.Vector2( 0.0001, -r0/2 ) );
var geometry = new THREE.LatheGeometry( points, 30 );
var material = new THREE.MeshPhongMaterial( { color: 0xFFFF20 } );
Ovo = new THREE.Mesh( geometry, material );
Ovo.position.set(0, 20.1, 0);
scene.add( Ovo );

You can create an "egg" geometry like so: 您可以这样创建“蛋”几何:

// points - (x, y) pairs are rotated around the y-axis
var points = [];
for ( var deg = 0; deg <= 180; deg += 6 ) {

    var rad = Math.PI * deg / 180;
    var point = new THREE.Vector2( ( 0.72 + .08 * Math.cos( rad ) ) * Math.sin( rad ), - Math.cos( rad ) ); // the "egg equation"
    //console.log( point ); // x-coord should be greater than zero to avoid degenerate triangles; it is not in this formula.
    points.push( point );

}

geometry = new THREE.LatheBufferGeometry( points, 32 );

在此处输入图片说明

three.js r.76 three.js r.76

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM