用three.js创建一个凹半球

Fab*_*aux 2 three.js

我是一名具有良好js经验的Web开发人员,我目前正在探索three.js的可能性.但是,我对3D形状和词汇并不是很熟悉,我无法弄清楚如何构建我需要的形状.

我想创建一个半球,并能够在这个球体内投影视频.我有一个全景球形视频,我需要扭曲它使它看起来像"飞机".感谢Paul的教程,我绘制了一个球体,并在其上投射了我的视频.但外球面是凸面的,我需要一个凹面!我无法弄清楚如何实现这一目标.从我最初的球体中挤出一个较小的球体?

请帮忙 !

Wes*_*ley 11

您可以通过设置其他SphereGeometry参数来创建半球:

SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength )
Run Code Online (Sandbox Code Playgroud)

尝试直到你得到你想要的.

您还必须将side用于球体的材质的属性设置为THREE.BackSideTHREE.DoubleSide.

material.side = THREE.DoubleSide;
Run Code Online (Sandbox Code Playgroud)

编辑 - SphereBufferGeometry这是更有效的记忆,现在也可用.它的构造函数具有相同的参数.

(Three.js r.82)

  • 好极了!这正是我想要的!这是最终的代码:`SphereGeometry(5000,16,16,Math.PI/2,Math.PI*2,0,Math.PI)```material.side = THREE.BackSide` (5认同)

Art*_*yak 5

您可以使用SphereBufferGeometry,来创建半球体(半球)。最后一个参数做到了这一点:0.5 * Math.PI。另外,为了能够看到某些东西,您需要使用THREE.DoubleSide材质。

var geometry = new THREE.SphereBufferGeometry(5, 8, 6, 0, 2*Math.PI, 0, 0.5 * Math.PI);
...
material.side = THREE.DoubleSide;
Run Code Online (Sandbox Code Playgroud)