问题标签 [decal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
264 浏览

libgdx - 如何在 libgdx 中设置贴花

我试图在 3D 空间中伪造一个阴影。ShadowDirectionalLight 不适合我的目的,因此我将运行基于纹理的动画。

我正在考虑为我的动画使用贴花。有人可以提供一个如何使用它们的例子吗?创建以及应该如何构建渲染周期让我感到困惑。我找到了这篇文章,但它似乎已经过时了。

0 投票
0 回答
979 浏览

html - ThreeJS:使用枢轴对象围绕中心旋转带有贴花的对象组

我正在尝试使用从组中心的枢轴对象旋转一组对象。假设我的对象组是一堆汽车零件,例如底盘、车身、车轮、发动机,每个零件都是 3-D 网格。

每个网格都有一个贴花,我使用以下内容添加:

为了围绕边界框的中心旋转汽车,我首先将所有网格物体放在一个组对象中

然后翻译汽车对象并将其添加到枢轴

为了旋转对象,我使用类似的逻辑在鼠标移动时对对象进行旋转

现在这是我面临的问题,我应用于汽车对象的平移由网格继承,但贴花保持在同一位置。我无法理解可能出了什么问题?谢谢

0 投票
1 回答
378 浏览

javascript - 更新 DecalGeometry 顶点、UV、

我目前正在玩ThreeJS 贴花。我已经能够在我的球体上涂上美丽的污点。

这是我用来在我的球体上“应用”贴花的一段代码。(我有一些自定义类,但不要担心这个。

现在,我想在我的球体上移动这个污点,从而更新我贴花的几何形状。

不幸的是,当我调用 时decal.geometry.computeDecal(),贴花的网格不会更新。我找不到任何解决方案。

根据DecalGeometry该类,该函数computeDecal已设置为 true 更新顶点、颜色、UV 等所需的各种成员......

谢谢您的帮助 !:D

PS:ThreeJS r80

0 投票
3 回答
711 浏览

three.js - 几何相交从直接几何转换为缓冲几何

我正在使用 Three.js。找到了Benpurdy编写的一个非常好的贴花库。它很容易修改,也使用了这里描述的技术

但是,该技术使用几何。我正在进行的项目使用 BufferGeometry。我跟踪了几何相交的代码,无法弄清楚从面和顶点到属性的转换。

感谢是否有人可以阐明如何继续追求这一目标?谢谢。

0 投票
1 回答
913 浏览

opengl - GBUFFER 贴花投影和缩放


我一直致力于将贴花投影到贴花边界框封装的任何东西上。在阅读并尝试了大量代码片段(通常在 HLSL 中)之后,我在 GLSL 中有一些用于投影贴花的工作方法。

让我首先尝试解释我在做什么以及它是如何工作的(到目前为止)。
下面的代码现在已经修复并且可以工作了!

这一切都是在透视视图模式下进行的。
我将 2 个制服发送到片段着色器“tr”和“bl”。这些是边界框的两个角。我可以并且将用硬编码尺寸替换它们,因为它们是贴花原始边界框的尺寸。tr = vec3(.5, .5, .5) 和 br = vec3(-.5, -.5, -.5)。我更愿意找到一种在贴花转换状态下进行位置测试的方法。(最后更多关于这个)。

为清楚起见添加此内容。从顶点程序发出的顶点是边界框乘以贴花矩阵,而不是乘以模型视图投影矩阵。我将其用于下一步:
使用该顶点,我从深度纹理中获取深度值并使用它,使用投影矩阵的逆计算在世界空间中的位置。

接下来,我使用贴花矩阵的逆矩阵转换这个位置。(缩放、旋转并将 1,1,1 立方体转换到其世界位置的矩阵。我认为通过使用贴花变换矩阵的逆矩阵,可以正确处理屏幕点的正确大小和旋转,但它是不是。

顶点程序:

片段程序:

这里有几张图片显示出了什么问题。我得到的投影: 在此处输入图像描述

这是贴花的实际尺寸。比我的着色器创建的要大得多! 在此处输入图像描述

我尝试使用贴花和投影矩阵创建一个新矩阵来构造一种“lookat”矩阵并将屏幕位置转换为贴花后转换状态。我无法使其正常工作。有些地方我错过了一些东西,但在哪里?我认为使用贴花矩阵的逆进行平移可以处理变换并将屏幕位置置于正确的变换状态。想法?

更新了纹理 UV 的代码。您可能需要调整 y 和 x,具体取决于您的纹理是在 x 还是 y 上翻转。我还修复了剪辑子,使其正常工作。事实上,这段代码现在可以工作了。如果需要,我将对此进行更多更新,这样其他人就不必经历我为使其正常工作而付出的痛苦。一些需要解决的问题是贴花相互叠加。上面的那个写下面的那个。我想我必须将颜色和法线累积到默认的 FBO 中,然后在光照传递之前或期间将它们混合(添加)到 GBUFFER 纹理。添加更多屏幕尺寸的纹理不是一个好主意,所以我需要有创意并尽可能回收任何纹理。

我找到了贴花相互重叠的解决方案。在绘制贴花时关闭深度遮罩,然后重新打开 int:

0 投票
1 回答
546 浏览

opengl-es - 在 OpenGL ES 中使用正向渲染的投影贴花着色器

嗨,我尝试使用 OpenGL ES 中的前向渲染技术创建贴花着色器。所以我需要一个对象来渲染(大多数时候是一个盒子)。然后我有贴花纹理和场景深度纹理。agk_XXXX 制服是当前的相机矩阵,希望能自我解释。我不确定是否需要以某种方式再次将位置取消投影到模型空间中,以及我将如何做到这一点。我不确定我的方法是否正确?!目前它以某种方式工作,但只是好像贴花对象是相机......这是我的顶点着色器:

这是我的片段着色器:

0 投票
1 回答
601 浏览

textures - UE4 贴花始终具有相同的材质

尝试通过生成贴花时遇到问题。虽然我已经设置了它的材质,但它正在使用“基本”虚幻材质之一生成贴花:
世界中的结果| 蓝图代码| 使用的材料
我已经尝试过用 C++ 编码并使用不同的材料。
在此先感谢您的帮助!

0 投票
1 回答
250 浏览

libgdx - 根据使用正交投影的 X/Y 位置忽略深度缓冲区

使用 libgdx,我想使用深度缓冲区丢弃被遮挡的精灵。为此,我将提供的 Decal 和 DecalBatch 与 OrthographicCamera 一起使用,并手动设置 z 位置。

根据我在 x 和 y 轴上的精灵位置,深度缓冲区是否按预期工作。

红色方块 z = 98 绿色方块 z = 10

平方比较

正方形是 50% 透明的,所以我可以看到深度测试是否按预期进行。

这里是测试代码:

这是一个深度缓冲区精度问题,是相机的方向搞砸了计算还是其他什么?

编辑:如果精灵在另一个精灵后面,我希望它们会被遮挡。所以在我的例子中,红色方块应该遮挡住他前面的绿色部分。左下角的方块有正确的行为,但右上角的方块没有。问题是红色方块具有相同的 Z 值,绿色方块也具有相同的 Z 值(当然与红色方块 Z 不同)。因此,使方形对不同的唯一因素是它们的 x 和 y 位置,这不应该影响深度测试。

所以,我想要的是一个一致的深度测试行为,它可以遮挡隐藏的纹理,就像我们看到的左下角的方块一样,无论它们的 x 和 y 位置如何。根据评论,我添加了有关我期望的信息。

0 投票
0 回答
60 浏览

c# - 为什么我的贴花投影仪同时撞击墙壁和地板时生成错误?

统一版本:2018.3.2f1

当我把球扔到墙上时,在球碰撞的地方会产生一个贴花投影。这一切顺利,直到球同时接触墙壁和地面。然后错误地生成贴花投影仪,因此红色斑点在两个表面上都不能很好地出现

正如您在下面的屏幕截图中看到的,我知道贴花必须与墙壁成一定角度,以便它也投影到地面上。只有我不知道我该怎么做

我现在确保当球接触带有标签“col”的层时,它正好在球碰撞的地方放置一个贴花投影仪。我想知道我如何也可以将这些倾斜放置

贴花生成错误 PNG

贴花产生了错误的视频

当它撞到墙壁和地板时,这就是我想要的: 这就是我想要的

}

0 投票
3 回答
2250 浏览

unity3d - 贴花环绕网格

我正在研究纹身模拟器程序,我需要知道贴花(纹身)是否有办法包裹在目标网格上,比如纹身从腿的一侧到另一侧,或者说事件在它后面。

在此处输入图像描述