- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想挤出一个形状并创建一个ExtrudeGeometry
,但是这个形状必须被挤出到某个方向。我在 Vector3
形状是在 x、y 平面中绘制的,通常 z 是挤出方向(挤出深度)。因此,方向向量 (0,0,1)
将导致默认挤压。但是例如 (0,0,-1)
会在另一个方向上挤出形状。
我首先尝试使用挤出路径来实现这一点,但是当使用路径时,允许形状自由“旋转”并且初始方向是任意的。这不是我需要的,形状必须保持原样。您可以阅读有关此 here in my previous question 的详细信息.
我已经想出了将矩阵应用于生成的 ExtrudedGeometry 的后半部分顶点的想法,但我似乎无法获得我想要的几何形状。也许是我对矩阵的笨拙使用,但我认为在这个技巧之后面部法线从里到外指向。
注意 方向向量永远不会与 z 轴正交,因为这会产生无效的形状
所以问题:
如何获得可靠的解决方案以将我的形状拉伸(stretch)到给定方向。这是一个例子。形状是 x,y 平面中的正方形(宽度和长度为 2000),挤压深度也为 2000,三个不同的矢量以及在 2D(前 View )和 3D 中看到的预期结果的绘图。
最佳答案
通过指定挤压深度以通常的方式挤压几何体,然后 apply a shear matrix到你的几何形状。
这里是如何指定倾斜几何体的剪切矩阵。
var matrix = new THREE.Matrix4();
var dir = new THREE.Vector3( 0.25, 1, 0.25 ); // you set this. a unit-length vector is not required.
var Syx = dir.x / dir.y,
Syz = dir.z / dir.y;
matrix.set( 1, Syx, 0, 0,
0, 1, 0, 0,
0, Syz, 1, 0,
0, 0, 0, 1 );
geometry.applyMatrix4( matrix );
(three.js 坐标系的 y 轴向上——与您的插图不同。您必须适应。)
three.js r.113
关于javascript - Three.js - 使用深度和方向向量的 ExtrudeGeometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25639268/
三.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
我是一名优秀的程序员,十分优秀!