问题标签 [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 投票
1 回答
5339 浏览

java - 用于 3D 游戏的 Libgdx 渲染地板

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

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

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

我考虑过使用 basic Block Modelsmade withModelBuilder然后添加 a Texture,但由于我只能看到 6 个面孔中的 1 个,所以 2dTexture就足够了,所以我想到了 a Plane

我可以将 a 添加Texture到 aPlane中,因为它是 3D 房间中的无限脸吗?然后我想到的最后一件事是Decals。

Decal我要找的吗?我该如何使用它们?或者您有其他解决方案。

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

谢谢

0 投票
0 回答
117 浏览

opengl - 将渲染模板印刷到未知曲面上

想要将多个不规则纹理贴在曲面上(网格与 xyz 顶点和每个指定的 uv)。我正在从模型文件加载网格,并且对表面没有任何先验知识......我们所知道的是它将具有“合理”的 uv 映射。想要选择一些 uv 区域并将纹理应用到它们。每个区域由 uv 坐标中的边界多边形指定。在这种情况下不知道等效的 xyz poly,或者我认为答案很简单。

我们对平面和简单的圆柱表面(我们将其近似为一系列扁平条纹,通过选择法线作为平均值进行平滑)进行了这种工作。在这两种情况下,我们都知道从 uv 到 xyz 的唯一映射,因此我们设置模板缓冲区以通过在绑定纹理和绘制真实表面之前将等效的 xyz 多边形绘制到模板缓冲区来限制绘制到所需的 uv 区域。

在将纹理贴到表面时,我们还在纹理中使用 rgba 透明度。通常每个纹理区域都是一个小的旋转矩形,因此我们将四个顶点绘制到模板缓冲区,然后使用纹理矩阵旋转它,并使用纹理中的 rgba 透明度来确保仅应用纹理的右侧部分。这一切都很好。

想重用我们的工作代码,但现在将这些纹理应用于任意曲面/网格。我们正在加载和绘制这些模型,并且已经可以将纹理应用于整个面[即 uv 从 (0,0) 变为 (1,1) ]。现在我们想要扩展它并将“放置”的纹理应用到每个表面的区域。

认为有可能直接将 uv 多边形绘制到模板缓冲区,甚至不知道等效的 xyz 多边形......然后所有现有代码都可以工作。也许可以使用像帧缓冲区对象这样的技巧,并对其进行模板多边形的初始绘制,然后在曲面网格的“真实”绘制期间将其用作模板。那会是一个好方法吗?或者,还有更好的方法?

欢迎任何建议或相关示例的 url 链接... PS 看过这些线程...有点相关,但我认为不是完全相同的问题...

将模板渲染缓冲区绑定到opengl中的帧缓冲区

将模板缓冲区可视化为纹理

我目前正在查看一些用于屏幕外阴影映射的工作 FBO 设置/使用代码,并试图使其适用于这种看似简单的情况。我不清楚的一点是需要设置 gl 调用......我对如何设置它感到很困惑。这是硬件阴影 FBO 设置的摘录,其中的位被切掉了??添加...任何关于正确顺序的帮助表示赞赏。

注意:tex, m_Frambufferare ints, 正确分配了 textureid 和 framebuffer,认为那个位没问题。我的主要困惑是

  1. 似乎代码确实将 glBindTexture、glTexImage2D、glBindTexture 释放为 0:提前释放是否正确?
  2. 需要 glDrawBuffer + glReadBuffer 调用吗?
0 投票
1 回答
420 浏览

libgdx - libgdx 获取屏幕上精灵的大小(以像素为单位)

我正在研究 Libgdx 项目。它基本上是 2.5D 方法,所以我使用 Decals 和 DecalBatch。还有 PerspectiveCamera,我可以操纵(放大/缩小),贴花是静态的。

我在找出屏幕上贴花投影的实际大小时遇到​​问题,例如。当相机放大时,它会更大,当缩小时,贴花在屏幕上会变小。

我需要得到那个尺寸。

我已经尝试过 camera.project 和 camera.unprojects,但它为两者返回相同的值,并且它仅适用于贴花的位置,而且我不确定 Libgdx 中的贴花使用什么坐标系。

任何建议如何解决这个问题?我能做些什么?

0 投票
3 回答
1323 浏览

text - libgdx 贴花动态文本

我正在开发 Libgdx 中的 3D (2.5D) 应用程序。我发现贴花对此非常有用。

在我的应用程序中应该有包含动态文本的图层,现在我想知道通过贴花绘制文本的最佳方式是什么。

目前我的实现是基于将 BitmapFont 绘制到 FBO,然后我得到 FBO 纹理并将其绑定到 DecalBatch.flush() 之前的 Decal。

我认为这可能不是最有效的方法,但无法找到更好的方法。

我的应用程序可以包含大量放置在 3D 世界中的文本“图层”,因此可能将每个 BitmapFont 绘制到 FBO,并将 FBO 纹理绑定到 Decal 并不是最好的方法。

你们有更好的主意吗?这样做最有效的方法是什么?

提前Tnx!

0 投票
1 回答
236 浏览

rotation - 此刻如何在一个以上的轴上旋转贴花

我正在使用 Decals 开发 Libdx 应用程序。贴花是 3d 世界中的 2d 精灵。

当我说:

一切正常,但是当我说:

贴花仅在 Y 轴上旋转。

如何管理这个问题?我发现源代码中的 Decal 使用四元数进行旋转,但目前我不知道如何自定义它以满足我的要求。

提前Tnx!

编辑:

我设法通过以下方式围绕多个轴旋转贴花:

decal.getRotation().setEulerAngles(偏航、俯仰、滚动);

现在我的问题是如何使用 TweenEngine 制作动画?

在获取值方法中,我有:

在设置值方法中,我有:

但是贴花没有移动或动画,它被卡在一个位置(在 XYZ 轴上稍微旋转)。

任何想法,TweenEngine 中的值都是正确的,但不知何故贴花不会刷新和旋转。

0 投票
1 回答
502 浏览

libgdx - libgdx 贴花未绘制到模板缓冲区中

我正在 libgdx 引擎中开发 3d 应用程序。

我刚刚发现 decalBatch 没有绘制到模板缓冲区中。我想为 3d 世界制作模板面具,但它根本不起作用。

这是适用于精灵批处理的代码,但不适用于贴花批处理。请帮忙!

编辑:

我发现应该清除深度缓冲区,启用和禁用 DepthMask,但我无法让它工作。

0 投票
0 回答
245 浏览

c++ - 在附加多边形上渲染贴花

我想将困难模型导出为 OBJ 格式并在 iPad 上渲染。完成的大部分工作。但是有以下问题。对于渲染贴花,我需要使用额外的多边形。为了计算 UV 坐标,我使用指数映射算法。应用此算法后,我得到带有纹理坐标的网格,但此算法使用大辐射(很多三角形)。毕竟我得到了这样的东西: 在此处输入图像描述

很多三角形,但其中大部分是不需要的。如何删除额外的 tiangles 和移动点以获得正确大小的贴花。

或者更简单的例子。如果我有一个带纹理的矩形(2 个三角形和 4 个点)(不在 0..1 范围内)。我想找到另一个 4 点(纹理坐标在 0..1 范围内)。好的,如果你看到我有黑色三角形的图像,我想得到红色三角形。 在此处输入图像描述

如何获得红色三角形点的位置(所有 4 个点的 x、y、z 坐标)。

0 投票
1 回答
592 浏览

rotation - Libgdx 贴花围绕自定义轴旋转

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

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

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

这个问题有一些解决方法吗?

天呐!

编辑:

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

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

在补间中我这样做:

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

知道如何结合平移和旋转动画以在枢轴点上的圆形路径中获得贴花旋转吗?

0 投票
1 回答
383 浏览

three.js - Three.js 合并对象和纹理

我的问题与这篇文章有关:

http://blog.wolfire.com/2009/06/how-to-project-decals/

如果我的理解是正确的,则将由原始网格和立方体相交的网格添加到场景中以显示贴花。我需要保存最终的纹理。所以我想知道是否有办法“合并”原始网格的纹理和添加的贴花网格?

0 投票
1 回答
1063 浏览

javascript - three.js - TubeGeometry + DecalGeometry 在管的一段

我想将贴花放在管几何图形的一段内(在背面)。

我的做法是使用 TubeGeometry 作为贴花几何。

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

这就是我想要的:( 画得不好)在此处输入图像描述

示例代码:

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

如何使用 THREE.DecalGeometry 在 TubeGeometry 中制作本地化贴花?可能吗?