问题标签 [3d]

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 回答
518 浏览

3d - gpu, old hardware, 3d acceleration and a lib

i am writing a 2d lib which will have 3d acceleration but i'd like to do it in a way that it will efficiently run on older HW. Possibly typedefs to hide options/functions that your targeted mode does not support. (also there may be emulation func turned on)

What are some of the things older HW do? here is a list of questions and things i know of.

  • Tiles, this will be unsupported. Its to old, my lib will support pixel access
  • Single pixel buffer with scrolling. Example GBA
  • multiple surface with surface to surface quick blt (no stretch)
  • multiple surface with surface to surface quick blt with stretch (maybe this was emulated? does any HW stretch images for you?)
  • HW pixel fill (i thought i saw the option in DX)
  • HW transparent colour? (colour which is transparent, thought i seen in DX specs)
  • Textures, older use to be a power of 2. The width does not have to be the same power of 2 as height? (example 64x256), does any require them to be the same
  • Textures, newer HW can have them any width and height (or is this a lie?)
  • Textures can be in crazy formats (ARGB 8888, ABGR 8888, ABGR 2 10 10 10)

Also, i cannot do a texture to texture blit? as in copy 60x40 from texture A to B in HW ? Also can textures be in palette? (i wont support this) and finally i should keep in mind about shaders 8)

What else am i missing?

0 投票
10 回答
2744 浏览

web-applications - 基于 Web 的应用程序的 3d 图形

我必须创建一个基于 Web 的应用程序,其中包括以下任务

  • 从数据库加载 3D 模型。
  • 显示 3D 模型。
  • 进行逆运动学计算以生成模型从初始位置移动到最终位置的一系列步骤。
  • 实时显示动画。

该应用程序最初旨在成为基于 Qt/OpenGL 的基于 PC 的应用程序,但我们正在调查将其实现为基于 Web 的应用程序是否可行。

我对基于 Web 的开发的知识仍然有限。

为了提出解决方案,推荐的方法/技术是什么?

谢谢!!

更新:首选平台独立解决方案。该应用程序需要在 Mac 和 Windows 机器上运行。

0 投票
6 回答
15453 浏览

math - 在 3D 空间中的点之间进行插值以形成光滑表面的简单方法

我试图想出一种简单而有效的方法来创建一个与许多给定“样本”点相交的光滑表面。

对于表面上的任何 X、Y 点,我在 4 个方向中的每个方向(X 轴上的下一个较高点和较低点,然后是 Y 轴)中识别出最多 4 个采样点。鉴于这一点,我想要一种方法来计算在 4 个样本点之间插值的 Z 值。

当然,在给定 4 个样本点中任何一个的 X、Y 位置的情况下,该算法应该输出该点的 Z 值。另请注意,样本点可能少于 4 个。

我猜想 4 个样本点的 Z 值的一些函数,以某种方式与样本点的距离成反比,但我不知道如何做到这一点。

任何人都知道一个简单的方法来做到这一点?

0 投票
5 回答
3276 浏览

algorithm - 网格级最佳遮挡剔除的最有效算法?

我是挑选新手。乍一看,似乎大多数遮挡剔除算法都是对象级别的,而不是检查单个网格,这对于游戏渲染很实用。

我正在寻找的是一种算法,该算法可以高精度地剔除单个对象内对于给定视点被遮挡的所有网格。它至少需要O(n log n),一个简单的逐个网格比较(O(n^2))太慢了。

我注意到 Blender GUI 会实时为您识别被遮挡的网格,即使您使用超过 10,000 个网格的大型对象也是如此。那里使用什么算法,请告诉我?

0 投票
3 回答
4737 浏览

math - 基于四元数的 3D 相机应该累积四元数还是欧拉角?

所以我编写了一个面向新程序员的基于四元数的 3D 相机,因此他们非常容易集成和开始使用。

在我开发它时,起初我会将用户输入作为欧拉角,然后根据该帧的输入生成一个四元数。然后,我将获取相机的四元数并将其乘以我们为输入生成的四元数,理论上这应该只是将输入旋转添加到相机旋转的当前状态,然后一切都会变得又胖又快乐。让我们称之为:累积四元数,因为我们只存储和添加四元数。

但我注意到这种方法存在问题。我使用它的次数越多,即使我只在一个欧拉角上旋转,比如 Yaw,它也会在一些迭代中开始流血到另一个,比如 Pitch。这是轻微的,但相当不可接受。

所以我做了更多的研究,发现一篇文章说累积欧拉角更好,所以相机将它的当前旋转存储为欧拉角,并且输入只是在每一帧添加到它们。然后我每帧从它们生成一个四元数,然后用来生成我的旋转矩阵。这解决了旋转渗入不当轴的问题。

那么有任何 Stackoverflow 成员对这个问题有任何见解吗?这是一种正确的做事方式吗?

0 投票
2 回答
2315 浏览

3d - 有没有一种简单的方法可以在 3D 中为心形建模?

我想用尽可能少的代码在不使用外部模型文件的情况下以 3D 建模心形。

在 2D 中,我可以使用一些 Bézier 曲线来绘制心形,我可以将其拉伸以获得简单的 3D 心形,但这看起来不像我想要的形状。心的底部应该是一个峰,上部应该是两个圆形的部分(嗯,我想你知道我的意思)。

那么,有没有一种简单的方法可以在 3D 中对这种形状进行建模(即,一个简单的公式或一个小代码片段)?

0 投票
2 回答
1749 浏览

algorithm - 3D表面重建算法

我有一个 3D 表面(例如圆锥)。它以等高线的形式投影到 2D 平面上,这意味着不同的 Z 在 2D 平面上会有不同的线条。问题出在轮廓上,如何通过插值恢复3D表面?我们只知道不同的折线之间的 z 差异。

0 投票
2 回答
2401 浏览

vb.net - vb.net 中的 3d 文件

我知道这将是一个难题,因此我不一定要寻找直接答案,而可能是教程或正确方向的观点。

我正在做的是对一个由远程操作员控制的机器人进行编程。我们在 SolidWorks 中有一个机器人的 3D 渲染。我要做的是将 3D 文件导入 VB(可能使用 DX9)并能够使用代码对其进行操作,以便远程操作员更好地了解机器人在做什么。操作员也将看到实时视频,但这对于这个问题并不重要。

任何帮助将不胜感激。谢谢!

0 投票
8 回答
95849 浏览

math - 计算 LookAt 矩阵

我正在编写一个 3d 引擎,并且遇到了 DirectX 文档中描述的 LookAt 算法:

现在我明白了它在旋转方面的工作原理,但我不太明白为什么它将矩阵的平移分量放在那些点积上。稍微检查一下,它似乎是根据新基向量在眼睛/相机位置上的投影来少量调整相机位置。

问题是为什么需要这样做?它有什么作用?

0 投票
2 回答
2644 浏览

3d - 从场景图中获取绝对位置和旋转?

所以我几次遇到这个问题:

我的 3D 场景图中有一些对象,它是其他对象的子对象。让我们称它们为 c(子)和 p(父)。

c 的位置是相对于 p 定义的。因此 c 可能有一个位置 (1,0,0) 但当然,由于 p 有一些其他位置,比如 (1,2,3),它实际上并不是在我们世界的原始位置呈现,而是在 (2 ,2,3)。

现在让我们说由于某种原因我们想知道c在世界坐标中的绝对位置(或旋转,问题是一样的),这通常是怎么做的?

c 是否应该知道它的父级并能够查询该位置并将其添加到它自己的最终返回一个绝对位置?