Articles of 素

从magicavoxel许多对象的performance为统一

我使用magica voxel为地板创建不同types的瓷砖,所以我可以有3种或4种不同的types,然后将它们混合在一起以创建一个房间和走廊的地板。 但是,我意识到这样一来,即使只有一个房间,我也会得到大量的“小”物体。 想象一个10×10的房间,再加上墙壁和屋顶…我知道,每个单一的对象是统一绘制的,所以会影响性能。 有没有办法解决?

行进立方体在网格中留下孔

您好我正在尝试重现GPUgem3第1章(使用GPU生成复杂的程序性地形) ,到目前为止我管理的基本知识…现在我打赌一些奇怪的输出。 我从建议的-ws.y开始创建一架飞机。 然后,当我移动到噪音,我注意到网格中的一些洞。 但不像这个以前的问题 。 噪声网格: 所以我决定尝试一些更简单的方法,3管:x ^ 2 + y ^ 2-2 X ^ 2 + Z ^ 2-2 Y 1 2 + Z ^ 2-2 我会假设有一些问题与Z轴。 但我似乎可以弄清楚什么。 我的function,以获得三角形的顶点位置也似乎确定… Vector3 vertexAlongEdge(int edge, Voxel v){ Vector3 result=new Vector3(0,0,0); Vector3 p1=v.vertexes[edges [edge, 0]]; Vector3 p2=v.vertexes[edges [edge, 1]]; float v1 = density (p1); float v2 = […]

如何创建一个基于高度图的Minecraft风格的世界

对于我的游戏,我正尝试创建一个基于我在Photoshop中创建的高度图的Minecraft风格的世界。 我试图制作7平方的地图,每个立方体都是1立方,但是我还没有find办法。 高度图转换成一个地形文件(统一),但我的问题是,我不能创建我的世界的外观。 到目前为止,我所做的是这样的 我想要的是这样的

体素地形引擎

是否有像Unity一样的游戏引擎的体素框架或扩展? 我真的需要一个系统dynamic生成体素可破坏的地形。

替代基于体素的地形

有没有其他基于体素的地形? 这种地形应该是完全可破坏的,允许在需要的地方保留尖锐的特征,并保持一致的拓扑结构。 也许你可以解释一下让你问这个问题的问题吗? 基于体素的地形基本上只是使用3D数据网格来存储数据。 有很多方法来呈现这些数据,但是存储它并不那么简单。 – Byte56 当前的等值面提取方法不是最有效的/无缺陷的。 立方行进似乎解决了大部分问题,但这是一个相对较新的方法,并没有太多的资源。 (我find了单一的大学论文) 即使我们坚持CMS,当我们想要添加多种材质支持时,我们可以将表面划分为多个网格,或者将纹理数组或纹理图集传递给着色器,然后限制设置纹理数量,并增加内存 – 使用很多。

体素游戏 – 相机在地形内时滞后

我正在OpenGL中制作一个体素游戏,目前我在屏幕上渲染8 x 8块。 我做的第一件事就是使用Simplex Noise生成地图,并且在创建块时完成一次。 我将每个块存储在每个块中包含的3D数组中。 创建块之后,我调用一个函数,检查每个块是否在空气块旁边,如果是则将它添加到可见块的单独数组中,否则将向其中添加一个空气块地方(这可能是一个更好的方法)。 一旦我有一个可见的块的数组,我调用一个函数返回一个网格,该网格将所有顶点,颜色数据,法线等等保存到3个大的VBO中(每个一个),而不是将每个块渲染到屏幕上用自己的vbo(我甚至无法正确渲染一个块)。 public static Mesh genChunkMesh(Block[][][] visibleBlocks) { ArrayList<Float> vertexData = new ArrayList<Float>(); //Storage for the chunk vertices ArrayList<Float> colourData = new ArrayList<Float>(); //Storage for the colours ArrayList<Integer> indexData = new ArrayList<Integer>(); //Storage for the indices ArrayList<Float> normalData = new ArrayList<Float>(); //Storage for the normals int blockNum = 0; […]

如何有效地批量块和减less类似体素的游戏中的drawcalls

为了在类似体素的游戏中充分利用Unity中的GPU实例,我尝试尽可能多的静态块(地形不会被破坏,我不能将这些块设置为“静态”稍后我需要为每个实例分配不同的属性) 我看到了两种可能的解决scheme: •为我的游戏中的每个可能的区块创建一个预制,并使用相同的材​​质/网格/ uvs 优点:不需要巨大的textureAtlas来存储反照率纹理 缺点:某些具有许多不同地形块的场景可能难以高效分批处理,并且为每种types的块添加属性将意味着每个块预制都会发生变化(如果我拥有不止一个生物群落,则是一场噩梦) •直接在片段着色器中创建一个单独的块预制,并用MaterialBlocks抵消它的UV 优点:涉及地形块的每个场景至less在理论上应该是有效的批处理,单一的预制来描述每种types的地形块 缺点:需要一个巨大的纹理地图集,如果它不符合游戏中的所有块纹理,将需要更多的纹理,我将在未来限制我的游戏块(除非我创建具有不同纹理绑定的不同材质,击败了这个解决scheme的目的),场景中的每种块的+片段着色器开销 我在这里错过了什么? 有不同的方法吗? 如果不是,在这种情况下,您认为哪一个最合适?

Voxel教程NullReferenceException:未将对象引用设置为对象的实例

我正在通过Unity中的这个体素教程 。 我正在第3部分,它向我展示了如何在世界范围内创建一个块。 我已经复制了代码,但是我想我错过了一些东西。 出现的错误是: NullReferenceException: Object reference not set to an instance of an object Chunk.UpdateChunk () (at Assets/scripts/Chunk.cs:76) Chunk.Update () (at Assets/scripts/Chunk.cs:34) 有问题的代码是在这一行: meshData = blocks[x, y, z].Blockdata(this, x, y, z, meshData); Chunk.cs using UnityEngine; using System.Collections; [RequireComponent(typeof(MeshFilter))] [RequireComponent(typeof(MeshRenderer))] [RequireComponent(typeof(MeshCollider))] public class Chunk : MonoBehaviour { private Block[,,] blocks = new Block[chunkSize, chunkSize, […]

体素游戏 – 高内存和CPU使用率

我目前正在开发一个体素游戏,最近我注意到,从初创时的游戏是在2GB左右的内存。 目前我正在渲染14 x 14块如下所示: 我在游戏上做了一个configuration文件,我注意到函数调用glfwSwapBuffers(…)需要运行9,964米/秒(76.4%),随着程序的使用寿命持续增长。 下一个函数是glDrawElements(),运行速度为849米/秒(8.49%)。 我不确定是什么造成了瓶颈。 回到高内存使用问题有两件事似乎造成高内存。 正如这里的线程所解释的: 体素游戏 – 相机在地形内部的滞后我生成一次地形,并且自从发布该问题以来,我为由可见顶点组成的每个块创建一个网格。 之后,我将每个块实体发送到我的渲染器,并从这两个代码块中抽取。 for(Chunk[] chunks1D: chunks) { for(Chunk chunk: chunks1D) { //Model matrix Matrix4f modelViewMatrix = transformation.getModelViewMatrix(chunk.getEntity(), viewMatrix); shader.setUniform("modelViewMatrix", modelViewMatrix); //Render mesh shader.setMaterialUniform(chunk.getEntity().getMesh().getMaterial()); chunk.getEntity().render(); } } 这称之为 public Matrix4f getModelViewMatrix(Entity entity, Matrix4f viewMatrix) { Vector3f rotation = entity.getRotation(); Vector3f position = entity.getPosition(); float scale = […]

行进立方体地形

在过去一周里,我一直在研究Marching Cubesalgorithm。 我希望将它用于地形,因为它可以造成地形的破坏。 在查看源代码并阅读了许多文章之后,我决定尝试自己编译一些代码,并尝试制作地形。 但是,这让我很头疼,似乎也找不到有关如何做的好资源。 http://img.ufgame.com/c%2B%2B/BbvJR.png 这是从这里find的例子 – http://www.angelfire.com/linux/myp/MC/ 相关的源代码可以在网站上find。 我将源代码添加到我的项目中,并将所有代码转换为与OpenGL 3.2一起使用。 但是,我不想在我的最终项目中使用这个代码。 (这只是我能理解的)。 我无法理解代码。 我觉得我现在理解这个algorithm,但是我似乎无法理解这个对象是如何形成的。 我怎样才能改变这个对象来创建地形? 互联网上有更好的资源吗? 提前致谢。