- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Three.js 场景,由许多建筑物组成,这些建筑物是通过堆叠形成的 ExtrudeGeometry
网格(想想 Mapbox GL JS 中的建筑物):
我正在使用 THREE.Shape
创建这些网格和 THREE.ExtrudeGeometry
(我正在使用 react-three-fiber ):
function coordsToShape(coords) {
const shape = new Shape();
let [x, z] = coords[0];
shape.moveTo(x, z);
for (const [x, z] of coords.slice(1)) {
shape.lineTo(x, z);
}
return shape;
}
function Floor(props) {
const {coords, bottom, top, color} = props;
const shape = coordsToShape(coords);
const geom = new ExtrudeGeometry(shape, {depth: top - bottom, bevelEnabled: false});
return (
<mesh castShadow geometry={geom} position={[0, bottom, 0]} rotation-x={-Math.PI / 2}>
<meshPhongMaterial color={color} />
</mesh>
)
}
然后我堆叠地板以产生场景:
export default function App() {
return (
<Canvas>
{ /* lights, controls, etc. */ }
<GroundPlane />
<Floor coords={coords1} bottom={0} top={1} color="skyblue" />
<Floor coords={coords2} bottom={1} top={3} color="pink" />
<Floor coords={coords3} bottom={0} top={1} color="aqua" />
<Floor coords={coords4} bottom={1} top={3} color="orange" />
</Canvas>
)
}
完整代码/演示
here .这导致地平面有一个网格,每个建筑部分有一个网格,所以总共五个。
mergeBufferGeometries
?但是如果我这样做了,我还能获得性能上的胜利吗?由于我已经有了坐标数组,我也很乐意使用它们直接构建一个大的坐标缓冲区。
最佳答案
Is instancing relevant to this scene?
关于three.js - 实例化是否适用于由具有不同几何形状的 ExtrudeGeometry 网格组成的 Three.js 场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67878720/
三.js v53 在 JSFiddle 上的 Three.js v 53 中,制作自定义形状,对其进行挤压并应用纹理和线框,显示挤压的面是完整的、完整的正方形。 JSFiddle:custom sha
var arcShape = new THREE.Shape(); arcShape.moveTo( 50, 10 ); arcShape.absarc( 10, 10, 40, 0, Math.PI
我想挤出一个形状并创建一个ExtrudeGeometry,但是这个形状必须被挤出到某个方向。我在 Vector3 中有一个方向 形状是在 x、y 平面中绘制的,通常 z 是挤出方向(挤出深度)。因此,
我使用 CatmullRomCurve3 在曲线上进行拉伸(stretch)。是否可以像下面那样挤出一条锐线: 我想要的是: 尽可能少的多边形。 最佳答案 有多种方法可以创建台阶几何体,但要使用 Ex
我以两种不同的方式使用 THREE.ExtrudedGeometry,我期望得到相同的结果。 一旦我使用深度来设置挤压选项。还有一次我使用了一条从 Vector3(0, 0, 0) 到 Vector3
我正在创建一个六边形形状的 ExtrudeGeometry 并尝试为正面和背面设置不同的 Material ,如 this thread 中所述。 . let shape = new THREE.Sh
我需要制作一个面向另一个对象的 3D 多边形。有什么好办法吗?我想过使用 ExtrudeGeometry,但我不知道如何对其应用 Object3D.lookat() 函数。我将不胜感激 :) 这是我现
我有一个 Three.js 场景,由许多建筑物组成,这些建筑物是通过堆叠形成的 ExtrudeGeometry网格(想想 Mapbox GL JS 中的建筑物): 我正在使用 THREE.Shape
我是一名优秀的程序员,十分优秀!