Questions tagged «3d»

3D是指三维空间,其中坐标用X,Y和Z值表示。


2
如何实现平移,缩放,旋转小控件来操纵3D对象的变换?
我正在开发基本的3D编辑器。它使用OpenGL渲染3D世界。现在,我的场景只是几个大小不同的盒子,而我正处于一个阶段,我希望能够选择每个盒子,然后对其进行移动/缩放/旋转以实现所需的任何变换。 我该如何解决以下问题:既实现这些工具的Gizmos(或手柄,又或者人们通常如何称呼它们)的渲染,又要在每个轴上拾取它们以用鼠标执行变换中的更改?为了清楚起见: 到目前为止,我的研究表明,最干净的方法是在Gizmo中为每个箭头设置一个与轴对齐的边界框,然后在每个正方形中使另一个箭头对齐(将对象沿平面而不是单轴移动),然后从鼠标投射光线定位并查看其碰撞。但这对我来说仍然太抽象了,我希望进一步了解该算法的运行方式(伪代码已足够)
11 opengl  3d 

3
查看两个体素是否互连的算法
我正在寻找以下问题的良好算法:给定3D体素网格(可能为空或填充),如果我选择两个不相邻的体素,我想知道它们是否通过以下方式相互连接其他体素。 例如(为了说明2D的情况),其中#是实心正方形: 1 2 3 a # # # b # # c # # # 如果我选择a3和c3,我想尽快确定它们是否已连接;如果在a3和c3之间存在通过填充像素的路径。(当然,实际情况是在3D体素网格中。) 我已经研究了泛洪算法和路径查找算法,但不确定如何选择。两者都执行不必要的工作:洪水填充会尝试填充所有体素,但这不是必需的。寻路算法通常与寻找最短路径有关,这也是不必要的。我只需要知道,如果有是一个路径。 我应该使用什么算法? 编辑:根据评论,我认为应该添加以下内容:体素的内容事先未知,并且还需要算法来检测是否删除(清空)体素是否会导致该组体素破裂分成两个或更多个较小的组。

1
呼吸游戏/电影角色
呼吸(胸部和面部特征的移动):我想问一下是否很难建模以及计算是否昂贵。我最近注意到它在马达加斯加3电影中产生了巨大的影响,但是(请纠正我,如果我错了)不记得在任何游戏中都看到过(除了冷/冬场景中的蒸汽云),而且很少有动画电影可以看到明显的程度(例如在情节或情况有必要时)。 从电影图形和游戏图形的角度,我将不胜感激。

2
如何在复杂的3D场景中正确实现Alpha混合?
我知道这个问题听起来似乎很容易回答,但这让我发疯。好的alpha混合机制应该处理的情况太多了,对于每种算法,我都能想到缺少一些东西。 这些是我到目前为止所使用的方法: 首先,虽然关于按深度对对象进行排序,但由于对象不是简单的形状,它们可能具有曲线,并且可能在彼此内部循环,因此这只是失败了。所以我不能总是说出哪一个离相机更近。 然后我考虑了对三角形进行排序,但是这个三角形也可能失败,以为我不确定如何实现它,在极少数情况下,可能会再次引起问题,即两个三角形相互穿过。同样,没有人能说出哪一个更近。 接下来是使用深度缓冲区,至少我们拥有深度缓冲区的主要原因是因为我提到的排序问题,但现在又遇到了另一个问题。由于对象可能是透明的,因此在单个像素中可能会看到多个对象。那么我应该为哪个对象存储像素深度? 然后,我想也许我只能存储最前面的对象深度,并以此确定我应该如何在该像素处混合下一个绘制调用。但是还是有一个问题,考虑两个半透明的平面,中间有一个实心平面。我打算在最后渲染实体平面,可以看到最远的平面。请注意,我将每两个平面合并一次,直到该像素只剩下一种颜色为止。显然,由于上述原因,我也可以使用排序方法。 最后,我认为能够工作的唯一一件事就是将所有对象渲染到不同的渲染目标中,然后对这些图层进行排序并显示最终输出。但是这次我不知道如何实现该算法。
11 3d  blending 

1
glVertexAttribPointer规范化
glVertexAttribPointer(索引,大小,类型,归一化,步幅,指针); 如果我使用type = GL_UNSIGNED_BYTE和normalized = GL_TRUE 如何标准化?将数据除以256进行归一化吗?要么?这将意味着无法将归一化值为“ 1.0f”。
11 opengl  3d 

3
第一人称游戏中的重力强度
在我们的游戏中,我们将重力加速度设置为9.8 m / s ^ 2的适当值。尽管从物理上来说是正确的,但它感觉更像是在月球上四处移动。它的感觉大约是16 m / s ^ 2。其他人有没有经历过?仅仅是因为我们没有运动模糊或声音来提供明显的速度感吗?如果感觉合适,仅将其设置为16 m / s ^ 2可以吗?

4
渲染分辨率独立文本
我需要一种在游戏中绘制分辨率独立的文本的方法。也就是说,我需要能够放大文本,并且永远都看不到像素伪像。 谁能对我的建议提出任何建议?
11 xna  2d  3d  text 


3
如何从视图矩阵获取翻译
如何从摄像机的视图矩阵中检索摄像机的世界空间位置?我对这个问题所见的唯一答案表明翻译是在最后一行/列中,但由于矩阵包含[x(右)点,y(向上),z(点)外观),因此该操作无效。
11 3d  mathematics  matrix 

1
以编程方式绘制球体的中间部分
我正在尝试创建一个球体的中间部分。基本上,要创建一个球体,将给出堆栈编号和切片编号,并且有两个变量phi(用于切片)和theta(用于堆栈)负责进度。并且该过程分为创建底盖,主体和顶盖(如下所示)。要达到中间一半(theta如下所示为中间50%),我们需要省略帽子,并以某种方式修改身体。我在玩堆栈号(1/4*stackNumbers to 3/4*stackNumbers),但没有给出想要的结果。 如何修改球体生成以达到中间一半(pi/4 <theta <pi*3/4)?我的总体问题是如何将球体分为上25%,中50%和下25%的3个不同部分? 以下是流行的以编程方式生成球体的代码: private void generateSphere(int stackNumber, int sliceNumber, boolean facingOut) { int capVertexNumber = 3 * sliceNumber; int bodyVertexNumber = 4 * sliceNumber * (stackNumber - 2); int vertexNumber = (2 * capVertexNumber) + bodyVertexNumber; int triangleNumber = (2 * capVertexNumber) + (6 * sliceNumber …

2
将第三人称相机旋转到目标
我有一台第三人称相机,它不直接看玩家,而是在他面前的某个地方。 当用户进入拍摄模式时,我希望相机转向播放器以面对目标。 在上图中。“ O”是玩家(来源),“ L”是角色,“ C”是摄像机位置,“ T”是目标。我想旋转后视线C-> L,以使其绕原点(“ O”)经过T(C'-> L'-> T')。 基本上,我需要找到在图片中以红色显示的角度alpha。 我将相机位置存储在这样的结构中: struct CameraTarget { Quaternion absoluteRotation; Vec3 absolutePosition; Vec3 cameraOffset; Vec3 lookatOffset; float FOV; } 因此,如果可以找到所需的角度,则可以执行以下操作: cam->absoluteRotation = cam->absoluteRotation * alpha; 为了让玩家始终注视目标。 如果look望通过原点,我可以简单地做 Vec3 origDir = cam->lookAtOffset - cam->absolutePosition; origDir.normalize(); Vec3 newDir = cam->target - cam->absolutePosition; newDir.normalize(); Quaternion …

1
如何有效地渲染大型地形网格?
最近,我一直在思考如何在游戏中生成地形的最佳方法。在另一个项目中,我通常使用高度图,因此所有核心工作都基于所使用的引擎,但是现在无法完成,因为地形具有数百万个必须精确绘制的特定多边形。而且,其中许多不能从Y向量进行解析(因为下面隐藏了多边形),也就是说,高度图在这里没有用。在这种情况下,我必须使用COLLADA对象。 有人告诉我要在Blender之类的软件中手动划分模型,但是不幸的是,这也是不可能的,因为这些地形是在另一个软件中成块创建的,然后加载到游戏中(这就是想法)。因此,每次必须手动对其进行切片将是一项巨大的工作。 因此,自从一周以来,我一直在研究如何解决此问题并以程序方式将此网格,地形(对应于相机平​​截头体)加载,以尽可能地节省性能。我遇到了许多有关过程网格生成的文档,我认为可以通过将网格映射到八叉树来解决我的问题。这是一项巨大的工作,至少对我来说是如此,这就是为什么我在这里,因为我不想冒险走错误的道路,而无需经验丰富的人来信。 简而言之,我有数百万个顶点和索引共同构成了地形,但是出于明显的原因,我无法同时绘制它们。它需要某种程序。将大型网格物体视为地形的最佳方法是什么?有没有关于这本书的具体书?有没有最佳的实施方法? 很抱歉出现任何错误,我是这个领域的新手。

2
有哪些方法可以对地形进行纹理映射?
我正在与XNA一起开发3D游戏,并且正在努力营造一个适当而良好的环境。实际上,我遵循了一个教程来根据高度图创建地形。要对其进行纹理处理,我只需在其上应用草纹理并将其平铺多次。 但是我想要做的是具有真实逼真的纹理,而且还可以自动生成它(例如,如果我想使用Perlin噪声生成地形然后对其进行纹理化)。 我已经学习了多重纹理,如何为不同的纹理加载具有不同颜色的地图文件,但是我认为这并不是真正有效的方法,例如,对于悬崖或非常陡峭的区域,由于它是从地面观看的,因此会严重地平铺纹理最佳。(此外,我不知道该如何绘制道路或泥泞道路。) 我正在寻找一种有效的解决方案,以对过程生成的地形进行逼真的纹理映射。

2
船在基于RTS的2D瓦片中的桥下通过
我正在编写基于2D切片的RTS。我想为其添加“伪3D”功能-跨河桥梁。 我还没有开始任何编码,只是试图考虑它如何适合碰撞检测模型。经过桥下的船只和经过桥上的部队最终将占据地图上的同一单元。如何防止它们发生碰撞? 是否有解决此问题的通用方法?还是我需要实现3D世界才能做到这一点?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.