- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将旋转的纹理映射到 PlaneGeometry 上。
基本上,我有一个 44x44 的钻石纹理,看起来像这样:
我想使用 UV 将图像中的钻石映射到我的平面几何体上。使用 Three.js 可以做到这一点吗?本质上,将 texel(0, 22) 映射到 uv(0, 0),将 texel(22, 0) 映射到 uv(1.0, 0),等等?
这是我使用的代码:https://jsfiddle.net/mxLt0bun/2/
geometry = new THREE.PlaneGeometry(1, 1);
texture = loader.load("https://i.imgur.com/DPZiMyK.png")
texture.minFilter = THREE.NearestFilter;
texture.magFilter = THREE.NearestFilter;
material = new THREE.MeshBasicMaterial({
map: texture
});
mesh = new THREE.Mesh(geometry, material);
// draw edges
var geo = new THREE.WireframeGeometry(mesh.geometry);
var mat = new THREE.LineBasicMaterial({
color: 0x00FF00,
linewidth: 1
});
var wireframe = new THREE.LineSegments(geo, mat);
mesh.add(wireframe);
scene.add(mesh);
最佳答案
您可以像这样修改几何体的 UV:
geometry = new THREE.PlaneGeometry( 1, 1 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 0 ].set( 0.5, 1.0 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 1 ].set( 0.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 2 ].set( 1.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 0 ].set( 0.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 1 ].set( 0.5, 0.0 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 2 ].set( 1.0, 0.5 );
BufferGeometry
效率更高。您不妨使用它。
geometry = new THREE.PlaneBufferGeometry( 1, 1 );
geometry.attributes.uv.setXY( 0, 0.5, 1.0 );
geometry.attributes.uv.setXY( 1, 1.0, 0.5 );
geometry.attributes.uv.setXY( 2, 0.0, 0.5 );
geometry.attributes.uv.setXY( 3, 0.5, 0.0 );
three.js r.83
关于javascript - 使用 UV 映射在 PlaneGeometry 上将纹理旋转 45 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41354930/
我有一个 PNG 图像作为 Three.js planeGeometry 上的纹理,它被拉伸(stretch)以适应大于原始图像大小的几何体。有没有一种方法可以根据图像纹理自动调整几何体的大小 - 或
有什么方法可以增加平面厚度,或者我必须在 three.js 中使用 BoxGeometry?? 最佳答案 平面是二维对象,所以你应该使用 BoxGeometry。 Documentation是获得此类
我正在使用 three.js 创建一个场景,上面有一个模型。我有一架飞机,模特坐在上面,还有一盏聚光灯照在模特身上。 模型由许多不同的对象组成。所有对象都设置为接收和转换阴影。阴影从模型的其他区域转换
我是 3d 和 threejs 的新手,我不知道如何让 PlaneGeometry 显示单独照明的多边形,即接收阴影或显示反射。我基本上做的是采用 PlaneGeometry 对顶点的每个 z 值应用
如fiddle所示旋转时, Sprite 会在某些角度消失,并且仅渲染一侧。怎么会?两边渲染的解决方案是什么?我必须操纵角度吗? 谢谢 最佳答案 默认情况下,面是单面的。 要渲染两侧,请设置mesh.
我试过使用 aerotwist 的教程。一切顺利,直到我搞砸了 THREE.PlaneGeometry,如下面的代码: var $container = $('#container'); var WI
我想更改 PlaneGeometry 悬停面的颜色,但我不知道如何获取所选面。这是我的代码: //THREE.WebGLRenderer 69 // Generating plane var geom
我对尺寸有疑问: var geometry = new THREE.PlaneGeometry(50, 50); var plane = new THREE.Mesh(geometry
我正在寻找一种在 Three.js 中生成不均匀山丘的简单方法。我已经能够使用粒子创建山丘效果并使用正弦波算法(大致)来定位它们 x = Math.random() * 1000 y = Math
我正在编写一个修改平面顶点位置的变形器,使用 UV 作为完成率 - 因此,如果顶点的 UV 为 (.5,.5),则它位于平面的中心。 来自 (Three.js) Custom Mesh UV Disp
是否可以将纹理加载到 PlaneGeometry 对象的特定面?我想要做的是将单独的纹理映射到 PlaneGeometry 对象的特定 2 个三 Angular 形。 这里有一些例子,用一些颜色给 P
我正在使用 Three.js 来显示平面,但是我似乎找不到更改其法线的方法。有一个具有普通属性的 Plane 类,那么有没有办法使用它来代替 PlaneGeometry 呢? 最佳答案 PlaneGe
我是 html5 和 three.js 的新手。我已经对它进行了一些试验,基本上我想要做的是拥有一个网格(我正在使用 planeGeometry,因为我遵循的教程使用了它)。网格显示不同的纹理,稍后可
我是 ThreeJS 的新手。我想为场景设置 BG 图像,当我运行以下代码时,我只有空白(黑色)屏幕。 谁能告诉我下面的代码有什么问题? $().ready(function(){ var w
我正在尝试将旋转的纹理映射到 PlaneGeometry 上。 基本上,我有一个 44x44 的钻石纹理,看起来像这样: 我想使用 UV 将图像中的钻石映射到我的平面几何体上。使用 Three.js
我正在尝试通过 Three.js 中的一组点绘制最小二乘平面。我有一个plane定义如下: var plane = new THREE.Plane(); plane.setFromNormalAndC
我希望图像能够完全显示,无论其大小 var src1 = "https://i.imgur.com/C9lWPeL.jpg", src2 = "https://i.imgur.com/a9zyCR
我正在尝试为 localClipping 配置 THREE.plane 的位置,但我发现它有点不直观。我有一个想法,是否可以创建一些planeGeometry,操纵它,并将其位置和方向转换为在其位置创
有没有一种方法可以以编程方式更改面的颜色,而不是预先创建 Material 托盘,然后根据顶点值进行分配?我有这个: var materials = []; materials.push([..] /
我是一名优秀的程序员,十分优秀!