标签: decal

three.js - 管段上的TubeGeometry + DecalGeometry

我想在一个管几何体的一段(在背面)中放一个贴花.

我的方法是使用TubeGeometry作为贴花几何.

这就是我所拥有的: 在此输入图像描述

这就是我想要的: 在此输入图像描述 (糟糕的画)

示例代码:

//code
var tube = new THREE.TubeGeometry(pipelineSpline, 200, 20, 20, closed2);

tubeMesh = THREE.SceneUtils.createMultiMaterialObject(
       geometry, [
            material,       // a phong material
            materialInside // a material for the inside               
       ]);

scene.add(tubeMesh); 

var decalGeometry = new THREE.DecalGeometry(
      tubeMesh.children[0], 
      new THREE.Vector3(0,0,0),      //position
      new THREE.Vector3(0,1,0),      //direction
      new THREE.Vector3(10,10,10),   //dimensions
      new THREE.Vector3(0,0,0)       //check
    );
Run Code Online (Sandbox Code Playgroud)

然而,这似乎沿着所有背面几何路径应用了管的贴花.而且我只希望它在关键位置的背面管的一部分上.

如何使用THREE.DecalGeometry在TubeGeometry中制作局部贴花?可能吗?

javascript decal three.js

9
推荐指数
1
解决办法
693
查看次数

Libgdx 贴花围绕自定义轴旋转

我正在使用 Libgdx 引擎和 3d 空间中的贴花的应用程序。现在我需要围绕 X、Y、Z 轴旋转贴花,但围绕 3d 空间中某处的自定义枢轴点。

我发现贴花有transformationOffset 字段,它可能适用于某些计算,但仅适用于Vector2。这意味着我只能在 X 和 Y 轴上移动枢轴点。当在 Y 轴上旋转贴花时,无论枢轴在哪里,结果都是一样的。

decal.transformationOffset = new Vector2(0, -5);

decal.rotateX(newValues[0]);
decal.rotateY(newValues[1]);
decal.rotateZ(newValues[2]);
Run Code Online (Sandbox Code Playgroud)

我也需要在 Z 轴上移动枢轴。

这个问题有什么解决方法吗?

天啊!

编辑:

我已成功在 3d 空间中的枢轴点上旋转贴花,但前提是枢轴和贴花的 Z 位置相同。如果他们不是,我就不会得到我所期望的。

这是适用于具有相同 Z 值的枢轴的代码:

decal.transformationOffset = new Vector2(pivotPosition.x - decal.getPosition().x, pivotPosition.y - decal.getPosition().y);
Tween.to(decal, DecalTween.XYZ_ROTATION, 5f).target(0, 360, 0).repeatYoyo(Tween.INFINITY, 0f).start(tweenManager);
Run Code Online (Sandbox Code Playgroud)

在补间我这样做:

target.setRotationX(0);
target.setRotationY(0);
target.setRotationZ(0);
target.rotateX(newValues[0]);
target.rotateY(newValues[1]);
target.rotateZ(newValues[2]);
Run Code Online (Sandbox Code Playgroud)

如何扩展它以使用和 Z 值作为枢轴。我正在尝试在旋转旁边添加和翻译动画来实现这一点,但结果很奇怪。

Tween.to(decal, DecalTween.MOVE_XYZ, 2.5f).target(decal.getPosition().x, decal.getPosition().y, pivotPosition.z - decal.getPosition().z).repeatYoyo(Tween.INFINITY, 0f).start(tweenManager);
    decal.transformationOffset = new Vector2(pivotPosition.x - decal.getPosition().x, pivotPosition.y - …
Run Code Online (Sandbox Code Playgroud)

rotation decal libgdx

5
推荐指数
1
解决办法
575
查看次数

Libgdx为3D游戏渲染地板

在我的第一个3D游戏中,我现在想要渲染地板,实际上是一个平面(不是libgdx Plane)y = 0.

我想添加一个Texture,所以我可以在每个级别有不同的楼层.

现在我的问题是:创建和渲染这个纹理地板的最佳方法是什么?

我考虑使用基本Block Models制作ModelBuilder然后添加了一个Texture,但因为我只能看到6个面中的一个,2d Texture就够了,所以我想到了Plane.

我可以添加一个Texture到Plane,因为它是在3D房间无限的脸?我接下来想到的最后一件事是Decals.

是否Decal就是我要寻找?我该如何使用它们?或者你有其他解决方案吗?

任何教程或其他帮助都会很棒.

谢谢

java 3d decal libgdx

4
推荐指数
1
解决办法
4743
查看次数

标签 统计

decal ×3

libgdx ×2

3d ×1

java ×1

javascript ×1

rotation ×1

three.js ×1