Articles of 三维网格

寻找一个全function的C / C + +紫外线Mesh Unwrapper

我的第一个问题! 是否有一个易于集成的开源C ++ / C代码解决任意网格的紫外线解缠? 我想用它来建立一个光映射器或类似的东西。 当然,我正在寻找非天真的解决scheme,但最大限度地利用纹理表面等问题解决了这个问题。 谢谢你们提前。

用另一个网格覆盖一个网格的algorithm

假设我有两个网格(让我先打电话给我MeshShirt和第二个 – MeshBody)网格alignment(如果我同时渲染MeshShirt“覆盖”MeshBody)。 但是身体的某些部位并不是“MeshShirt”之下(因为MeshShirt形状与MeshBody不同) 我怎样才能“拉起”在MeshBody下的MeshShirt的部分,并在其他地方保留其他部分? 当然,我想保存MeshShirt的形状,如果可能的话 我想下面的algorithm 通过追踪其法线与MeshBody的交点来标记MehsBody下的MeshShire的所有点。 但是如果MeshShirt“隐藏”的部件有复杂的形状,正常的跟踪将不起作用。 所以需要一些检测不良点的方法 将每个标记点移动到MeshBody最近三角形的平面上。 但是我恐怕这些algorithm可能会产生MeshShirt的显着变形。 所以一些形状保存变形也是需要的。 对不起,我英语不好,模糊的问题的定义

使用2D地图进行3D游戏的等级编辑

我们正在尝试为3D游戏制作关卡编辑器,这个游戏涉及在室外环境中行走。 在很多方面,高度图满足游戏的需求,但是在很多方面也存在不足,所以我们正在考虑对高度图概念进行各种改进,但是很难find解决这个问题的简单方法。 一开始,一个高度图有很大的难度和尖锐的边缘。 只要一切顺利,高度图看上去很美,但是沿着垂直的悬崖,沿着道路的边缘,以及高度图的分辨率变得相关的任何地方,都会变得锯齿状。 这些问题的明显解决scheme是在高度图顶部添加一个vector绘图层,所以我们可以精确地定义垂直悬崖和道路的曲线,并使用它将专门的多边形插入到地形的网格中。 垂直悬崖甚至可以是地形网格中的一个简单的间隙,可以用另一个网格填充,这样我们就可以渲染悬崖面,不过我们喜欢这样做,绕过了海格图通常具有的局限性。 高度贴图的另一个问题是手工绘制平滑斜坡的难度。 对于游戏的目的,地形应该是一个缓坡或一个垂直的悬崖,所以没有模棱两可的问题,玩家是否可以穿越它。 我们可以扫描高度图以检测过度陡峭的斜坡并显示错误消息,但我们真正想要做的是给用户绘制工具,只会绘制可接受的斜坡。 但是,这怎么办呢? 也许传统的栅格高度图会导致比解决更多的问题,所以需要完全不同的高度图。 也许不是添加一个vector绘图层,而是将整个高度图作为一个vector图像来表示,并且用一组多边形表示,每个多边形都有一定的高程。 这样我们就可以自动获得平滑的曲线,为垂直悬崖和平坦的土地创建网格是微不足道的,但是在编辑器中呈现斜坡并渲染它们成为一个挑战。 我们已经考虑过在第二层绘制多边形的混合工具,无论这些混合多边形出现在哪里,底层的地形多边形都会平滑地合并在一起。 具有共享边缘的多边形将从与这些边缘垂直的斜坡以一定角度倾斜,从而使斜坡可行。 不幸的是,生成网格的几何graphics是困难的,这意味着悬崖是每个海拔变化的默认值。 由于用户画线来阻止玩家的通过似乎更自然,而不是画出玩家可以穿越的地方,所以另一种方法是让用户像在栅格高度图中那样在另一图层中画出悬崖线,但是现在那些悬崖峭壁将会阻止地形变成纯净的连绵起伏的丘陵。 将高度图的每个多边形设想为具有垂直边的沙子的支柱,并且当从地graphics成网格时,沙子从其支柱stream出,除了遇到悬崖线并且被迫stream动之外,在每个方向上形成平滑的斜坡周围。 除了悬崖之外,任何地方都需要有足够的坡度向上走,所以当悬崖上有缝隙的时候,沙子需要stream过并在另一边铺开。 我们对如何实现这个目标有一些想法,但这仍然是一个重大的挑战。 最后,我们可以用一个斜坡块来表示斜坡。 编辑将是容易的,生成网格将是容易的,所有的问题将被解决,但被限制在一个网格肯定会牺牲我们希望拥有的自由。 除非没有其他解决scheme是可行的,否则我们不希望受限于轴alignment。 最终的问题是:是否有切实可行的方法来实施我们正在考虑的任何方法,还是我们从完全错误的方向来实现?

渐变多边形触发区(计算潜水级别)

有一个自定义网格的多边形触发器。 我可以计算这个触发器的潜水水平吗? 我需要创建自定义辐射感染区域,潜水时危险效应增加。 逻辑上没有形状中心(最大伤害),也有伤害最大的地方。

无法操作“导入对象”菜单(Unity)

我导入了一个模型,但出于某种原因,我无法编辑导入对象菜单下的任何设置,例如网格filter或网格渲染器。 看到这个: http : //i.stack.imgur.com/t7ZYR.png为screencap。

3ds Max Biped Scale限制

我在3ds Max下有一个3D模型,我试图整合一个Biped骨架。 但是当我开始调整骨盆或其他骨骼时,我无法调整它。 我不知道为什么,这让我疯狂。 如果有人可以帮助,将不胜感激。

OpenGL多重网格管理

我一直在用Java编写一个新的3D引擎。 至less现在我坚持openGL … 目前我正在修改网格如何变换,然后绘制。 ATM创建的每个网格都有自己的VBO和IBO以及自己的绘图方法,所以如果我想绘制多个网格,它将如下所示: mesh1 = MeshLoader.loadMesh("cube.obj"); mesh2 = MeshLoader.loadMesh("pyramid.obj"); mesh1.addToBuffers(); //adds vertex and index data to vbo and ibo mesh2.addToBuffers(); mesh1.draw(); mesh2.draw(); Mesh类中定义的绘图方法启用顶点属性数组,绑定bufffers,然后基于ibo绘制元素。 然后,我把我的投影matrix(变换和透视)作为一个统一的顶点着色器。 题: 游戏是由许多网格组成的,每个网格都必须被识别出来,以便可以应用转换。 我希望能够将变换(平移,旋转,缩放)直接应用到给定的网格,而不依赖于其他网格。 换句话说,我想将mesh1移动到右边(在它自己的轴上),而不影响mesh2。 我怎样才能做到这一点,而不需要拨打电话给GPU? 任何意见赞赏。

生成阴影卷的网格

给定一个网格,我想生成另外一个网格,这个网格实际上是这个网格的阴影体积。 我正在寻找一个algorithm/解决scheme/实现/参考,可以做到这一点下面的约束: 我有一个单一的 点光源。 从而: 不是多边形; 我想要硬边/面(不是软阴影) 光源在无限远处,实际上可以假定为直接在网格上方。 从而: 投影实际上是正交的,只依赖于一个方向。 我想要一个确切的解决scheme 结果网格不用于显示,因此不能像许多algorithm那样基于分辨率相关的栅格化。 一个朴素的algorithm是在远离光线的方向(例如向下)挤出所有网格三角形,并对所有这些挤出的“棱镜”进行CSG结合。 这里的缺点是: 它对所有的三角形都是这样,而不仅仅是可见的(如何做到精确的可见性? 它需要大量昂贵的CSG操作。 我正在寻找一个更有效的algorithm。

重建Mesh.uv和Mesh.vertices时避免GC

由于统一将不允许用户遍历mesh.uv和mesh.vertices,所以在将一个uvs和顶点数组应用到网格时,我不得不使用GC密集型调用。 我遇到了高GC分配,因为每次我重建一个网格,紫外线和垂直arrays将是一个不同的大小,由于网格被修改。 反过来,这将导致不得不resize或创建新的uv / vert数组,这就是抛弃旧数组或列表时以及应用到网格时垃圾收集成为问题的地方。 示例1 – 列表:例如,为经常构建的网格构建List UVList将需要调用UVList.Add(Vert),这会在List被List.Add重新resize时为GC创建垃圾,因为当列表是resize,它创建一个新的副本,旧的副本进入GC。 此外,将这个列表应用到mesh.uv需要调用UVList.ToArray(); 这是一个讨厌的调用,如果你有一个很长的顶点列表,因为它再次被转换为数组,那么它会创建一个巨大的GC mesh.uv = UVList.ToArray()创建的UVList数组转到GC。 例2数组:我试着使用固定的数组大小,但后来得知,你不能遍历网格的顶点或uv数组。 例如,使用for循环直接将顶点数组应用到mesh.vertices将导致不显示网格(即,对于(i = 0; …){mesh.uv [i] = uvArray [i];}) 如果我不能做到这一点,那么我遇到了与例1相同的问题,因为唯一的办法是每次你想更新你的网格,具有差异/垂直长度时创建新的数组。 调整数组大小需要创建一个新的副本,然后你有与GC相同的问题。 我尝试阅读这个经常更新网格的人处理Unity GC的例子http://gamasutra.com/blogs/RobertZubek/20150504/242572/C_memory_and_performance_tips_for_Unity.php 他并没有真正解释他的辅助方法将UV应用到网格上,而当从他的例子中尝试时,它也导致了GC。 我想我的问题是,我怎么能经常更新一个网格与diff uv /垂直数组大小没有运行GC GC Alloc放慢我的项目?

统一:模型建设在飞行中

所以,如果有些术语是错误的,请原谅我,我刚刚开始使用Unity,我不记得正确的名字。 我也在打电话,所以当我发布这个问题的时候,我没有团结在我面前。 我正在开始基于体素的游戏。 游戏中的所有东西都是由64×64立方体构成的模型。 我想用给出的代码说一个4096位的数组,能够用这些立方体在游戏中构建一个模型。 我知道你可以以编程的方式将你已经导入的模型添加到统一中,但是我想以编程的方式制作连续的网格物体,而最高的性能是目标。 我不希望一定数量的小1×1立方体网格彼此相邻,但是特别是一个模型。 这可能吗?