Questions tagged «3d»

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

2
如何选择3D游戏世界的缩放比例?
我正在使用C ++进行一些物理模拟的3D坦克游戏原型。我需要做出的决定之一是游戏世界相对于现实的规模。例如,我可以考虑1个游戏中的测量单位对应于现实中的1米。这感觉很直观,但是我觉得我可能会缺少一些东西。 我可以将以下问题视为潜在问题: 3D建模程序兼容性。(?) 数值精度。(这很重要吗?)尤其是在大型比例游戏中,像《战地风云》这样的游戏如何拥有巨大的地图:如果使用真实世界比例的1:1映射,它们如何不失去数值精度,因为浮点表示会随着精度的提高而损失更多的精度。数字(例如射线投射,物理模拟)? 游戏性。我不希望在使用像-9.8 m/s^2重力这样的几乎真实的值时,单位的运动会感到缓慢或快速。(这可能是主观的。) 可以放大/缩小进口资产,还是最适合原始规模的世界? 渲染性能。具有相同顶点数的大型网格物体渲染速度是否较慢? 我想知道是否应该将其分为多个问题...

2
具有两个角的对角线视线
现在,我正在使用Bresenham的线算法来获取视线。问题是我发现了一个边缘情况,玩家可以透过墙壁看。当玩家注视着墙的两个角之间,且在另一侧有特定角度的间隙时发生。 我想要的结果是将两堵墙之间的瓷砖标记为无效。 修改布雷森汉姆线算法以解决此问题的最快方法是什么?如果没有好的解决方案,是否有更合适的算法?任何想法都欢迎。请注意,该解决方案还应该能够支持3d。 编辑:我的简单解决方案是检查直线的x和y坐标更改时两个角是否都闭合。有关完整产品的工作源代码和交互式演示,请参见http://ashblue.github.io/javascript-pathfinding/

2
如何定义充满水的区域?
我想通过漂亮的水仿真来增强我的小游戏引擎。首先,我需要找到一种在游戏中代表水的正确方法。不幸的是,我对代表的了解不多,所以我问你。我前段时间也曾问过类似的问题。但是由于我没有明确提出问题,答案是正确的,但不是我想要的。 在某些游戏中,水只是由高度确定的。例如,零高度以下的所有物体都在水下。我在大多数游戏中都看到了这种表现。问题是我希望在户外世界中不被淹没的洞穴以及每个湖泊和海洋的水位都不同的洞穴。 水的出现的另一种更精确的表示是颗粒。每个水滴都作为点存储在世界空间中。要渲染它们,我可以使用诸如metaball之类的技术,以便它们构建单个网格。这种表示形式对于现实主义非常有用,因为我可以轻松地计算出它们之间的动态关系。令人遗憾的是,没有机器可以实时计算大量的元弹。 还有其他方法可以代表发动机中的水吗?我想拥有动态湖泊,因此无法通过静态几何图形定义水域。例如,如果玩家修改地形以加宽湖泊,则水应填充该海湾,而湖泊的总水位应略有降低。

1
是否有任何游戏引擎能够实现真正的双耳位置3D音频?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我绝不是游戏设计师,所以如果我没有使用正确的术语,我会提前道歉。随时纠正我的错误。 我的理解是,目前,在大多数(如果不是全部)第一人称射击游戏中(例如L4D2或《生化奇兵》),“ 3D音频”是通过考虑玩家在游戏中的位置和位移而产生的,但主要是通过玩上 平衡(指示声音来源的方向), 振幅(指示播放器与声音源之间的距离)。 但是,对于心理学实验,我想让我的受试者使用与头部相关的传递函数(HRTF),使用真正的双耳位置3D音频播放自定义的第一人称射击游戏。如果您不知道我在说什么,我邀请您在此URL收听双耳录音。 我知道只有一款使用真正的双耳位置3D音频的游戏:Papa Sangre,但这不是FPS。 我的问题(所有相关问题)是: 可以使用任何当前可用的游戏引擎(Valve的Source?)来设计此类FPS游戏吗? 如果对1.的回答为是,那么您是否有任何有用的链接? 如果对1.的回答为“否”,那么是否已经宣布了具有这种奇迹的游戏引擎? 是否有迹象表明真正的双耳定位3D音频将在未来的FPS游戏中很快找到位置?(我当然希望如此!)

1
GPU与CPU上的网格处理
只是有点好奇-您在CPU或着色器中的哪里执行网格处理?我一直在做CPU上的所有事情,一位朋友建议将其移至GPU端。 如果您在GPU上执行骨骼动画之类的操作,如何获得网格?(因为我正在进行碰撞检测...)
9 opengl  3d 

1
gluLookAt如何工作?
据我了解, gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 等效于: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); 但是当我打印出ModelView矩阵时,对的调用glTranslatef()似乎无法正常工作。这是代码片段: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

2
为什么我的模型不能连续点亮?
我使用Blender创建了一个基本的纹理立方体模型来进行建模,然后将其导入Unity。我放了一些照明灯后,看起来很难看。一排纹理立方体上的光线不连续: 更奇怪的是,组成地板的砖块上的灯光是连续的。我究竟做错了什么? 这是没有纹理的外观: 如果我不知道这些是完美的立方体,我会说表面上有轻微的弯曲。我也尝试减轻纹理,但这也无济于事: 我只是简单地从Blender中导出模型,而没有设置任何法线或类似的东西。但是,对于地板砖模型,我也没有做任何特别的事情。 检查法线,它们似乎指向正确的方向。 我也没有真正看到两个模型之间的区别。在纹理面板上,我还将投影设置为平坦: 我检查了Blender中的不同面板,“对象数据”面板上唯一与法线相关的选项是“自动平滑”,默认情况下处于关闭状态:

2
在非常简单的3D赛车游戏中,如何处理碰撞?
我想知道在一些简单的3d赛车游戏中是如何发生碰撞的(尤其是在Outrun 2 / Motoracer之类的游戏中)。 在具有复杂环境(开放世界)的经典赛车游戏中,我想这是通过一个基本的盒子(用于汽车)与飞机相撞(用于轨道,建筑其他东西)来完成的。整个过程将使用一些边界框进行优化(这是许多游戏中完成碰撞的方式)。 在《 Outrun 2 / Motoracer》这样的游戏中,游戏玩法是如此简单,以至于开发人员可能并不需要它,并且一切都可以简化很多。对于那些从未玩过的人,这里是这么具体: 汽车/自行车总是粘在道路上。 道路总是相同的大小,并且形状非常简单。 唯一的可能性是沿着这条路行驶,这不可能离开这条路,或者与其他东西发生碰撞(其他汽车/自行车除外,但我们不在乎)。 当您与道路相撞时,会发生非常基本的街机碰撞(只需将汽车从道路上推开) 这是我认为碰撞(可能)已经完成的方式: 整个轨迹可被视为3d贝塞尔曲线的巨型曲线。从该曲线可以生成道路多边形(使用从曲线生成的前,左和上向量)。其他元素(如房屋,树木等)也可以使用此方法放置和对齐。 然后,处理碰撞(并绘制汽车): 1)从当前汽车3d位置找到3d曲线上的最近位置。换句话说,将3d汽车位置转换为贝塞尔曲线位置。道路上的每个3d位置都可以视为沿着3d曲线(t)+横向位移(d)的位移。检查下面的图像是否不清楚(这是2d示例,但这很容易应用于3d)。 当t = 0轿厢在轨道段的起点时,当t = 1轿厢在终点处。当d = -1或1辆汽车在轨道边界时,当d = 0汽车在道路中间时 2)使用t和将汽车与道路对齐d(非常简单:对于t和,d我可以得到3d位置+上/前/左向量)。这辆车现在粘在路上了 3)检查d轿厢的横向位移。如果价值太大(d > 1)或太低,则(d < -1)汽车偏离轨道。只需将其夹在正确的位置即可。 这也使3d剔除非常简单,只需将轨道从当前汽车t位置绘制到即可t + some_big_enough_value_to_avoid_visible_clipping。 也许我完全错了:仅检查汽车(边界框)和代表轨道(没有建筑物等)的一组非常简化的多边形的碰撞会更快,更简单。3d世界(以及由此产生的colision模型)以前只是使用某些3rd party工具(运行游戏时不再有3d曲线,只是一堆多边形)生成的。

3
如何计算球体和平面之间的碰撞响应?
我正在尝试创建一个简单的3D游戏,并且需要将玩家限制在游戏世界的范围内。当玩家撞到世界的两边时,我希望玩家的飞船稍微弹起。 实际上,我试图将玩家困在一个盒子里,阻止他们从侧面逃脱…… 我设法将游戏世界的界限定义为一组平面,并具有法线和距原点的距离。播放器有一个球形的边界球,通过跟踪此网站http://www.gamasutra.com/view/feature/3383/simple_intersection_tests_for_games.php,我设法检测到了碰撞。 现在,我无法完全确定检测到碰撞时该怎么办。我能管理的最好的办法是让玩家卡在飞机上,直行通过飞机,或者以非常快的速度反复跳下飞机。 常识告诉我,我需要使用其法线来计算平面上的反射角并将其应用于玩家的速度,但是我想我首先需要查看玩家是否已通过平面,这是我无法做到的锻炼。

2
如何解决两个碰撞体的渗透
我已经实现了简单的3D游戏物理引擎。我已经有适当的碰撞检测功能,现在我正在尝试找出碰撞响应部分。我正在使用基于脉冲的方法来计算碰撞后的速度。这工作得很好,但是并不能完全阻止物体相互渗透。因此,我还有其他代码来解决渗透问题。目前,我只是沿着接触法线将实体移动了穿透深度的一半-第一个实体沿接触法线的方向移动,第二个实体沿相反的方向移动。 在大多数情况下都可以,但是有一些不良影响。例如,想象一个狭窄的走廊和一个物体在其中移动。如果对象撞到走廊的一堵墙,则穿透分辨率会将其移到相对的墙,然后在下一帧中移回第一堵墙,依此类推。效果是物体在墙壁之间确实非常快地振动,这不是很漂亮。 所以我的问题是,是否有更好的方法来解决渗透问题?也许不移动物体,只是以某种方式调整它们的速度(除了脉冲计算),以使它们停止彼此相对移动,并且穿透力在接下来的两帧中自行解决。我只是在猜。有任何想法吗?

1
如何从样条曲线生成3D赛道?
我想围绕描述其形状的样条线生成3维赛道。 这是一个说明性视频。 轨道应该是一条沿着3D样条线扫过的无尽隧道,并抛出一些障碍。到目前为止,我最好的想法是沿样条线放一个圆形。 我还希望获得一些指向如何管理几何的指针,即如何从放样操作创建几何,如何在内存,碰撞和纹理化中管理其“生命周期”。

2
如何用线条绘制3D世界,更像是素描或卡通
考虑制作一个没有阴影且所有线条均具有相同权重的水墨绘图,例如在Dilbert之类的连环漫画中所看到的。这代表了一个活跃的3D世界,但是对象没有纹理,但是您也看不到细分的三角形。 为了举例,考虑绘制月球表面。您可能绘制的线将沿着丘陵的顶部边缘,直到它们与地面的大致水平相交。在那些山的后面,对于较大的山丘,到远方,在地平线之后,您将执行相同的操作。对于环形山,您可以为外边缘绘制一个近圆,为下边缘绘制一个部分被屏蔽的圆。巨石的边缘和主要可见边缘将有一条线。宇航员的外缘和宇航服的主要特征将成一条直线。 我是一位经验丰富的程序员,但对3D编程还是陌生的。我不能随便想到一个看起来像这样的游戏-完成了吗?怎么办呢?我想到了两个问题-找到明显的边缘并绘制。是否需要基于行从矩阵向上编码的“引擎”,而不是常规的3D引擎?
9 3d 

3
我可以使用四元数来控制直升机吗?
我正在尝试在3D模式下进行简化的直升机(目前是立方体)仿真,并且在旋转方面遇到一些问题。直升机可以沿三个轴旋转: 使用后螺旋桨自行旋转:y轴旋转 左右倾斜以向左或向右移动:z轴旋转 上下倾斜以向后或向前:x轴旋转 我需要能够分别控制每个轴。到目前为止,我已经尝试过使用欧拉角,但是无论使用哪种旋转顺序,我都会碰到万向节锁或某些轴“切换位置”。 我似乎需要使用四元数,但是我不知道如何控制每个单独的轴,因为四元数使用方向和角度。我应该创建三个四元数并将它们相乘吗?我会不会遇到同样的问题? 奇怪的是,如果我用手指来代表直升机的三个轴(竖起= y,索引= z,中间= x),我似乎没有遇到这些问题。为什么?
9 3d  rotation 

2
具有弯曲平面的2.5D平台游戏的物理
我正在XNA中创建一个2.5D平台游戏,该平台使用的3D模型必须沿着2D平面行进(就像Trine一样)。 不过,为了使事情更棘手,我希望2D平面本身能够弯曲。考虑一下Klonoa的重播(您只需要观看10秒钟):尽管玩家在2D平面上,但该平面本身可以包裹在山的侧面​​,有效地使玩家可以一直穿越3D空间限于平台平台的常规2D平面。 在这样的游戏中应该如何处理物理问题? 我应该使用2D物理引擎还是3D物理引擎? 实际上有没有考虑到这种情况而设计的物理引擎? 对于任何并非为此设计的内容:要使物理引擎与我合作,需要哪些技巧或技巧?
9 xna  3d  physics  2.5d 


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.