Articles of 3d mesh

渲染波前网格的问题,没有显示(VBO)

我有一个使用VBO显示我的wavefront obj文件的问题我的fps计数器减慢,就像有东西正在绘制,但我什么也看不见。 这是我的装载机的问题吗? 或者也许只是在我的VBO渲染代码中的一个简单的错误? 我检查了我实际上正在加载数据,但也许它是在错误的顺序。 我使用OpenGL探查器,发现没有什么似是而非的纹理,VBO和IBO在GPU中。 我做了两个不同的obj文件,其中一个是我的,一个是我在NASA网站上发现的一个随机文件,两个文件都以相同的速度(约60 fps)渲染,屏幕上没有任何东西。 如果你想从OpenGL分析器的任何输出问我。 BlockRender.cpp http://pastebin.com/3KuuWX9H Renderer.cpp http://pastebin.com/gDCvi3t7 相关的代码片段http://pastebin.com/rTqRzYXL 样本波前obj文件http://pastebin.com/qVJ55gwn

与紫外纹理图谱撕裂的纹理

下面的代码将贴图从纹理贴图映射到UV。 问题是我有纹理撕裂的问题。 有谁知道如何克服这个问题,并有任何建议? 这里是我有的代码,所有的图像点过滤,并没有使用mipmapping 。 for (int i = 0; i < mesh.uv.Length; i++) { UVs.Add(GetUVTextureFromAtlas(mesh.uv[i].x, mesh.uv[i].y, voxel, 0)); } […] Vector2 GetUVTextureFromAtlas(float x, float y, ushort voxel, Facing side) { Rect rect = GetVoxelTextureRect(voxel, side); float xout = UVLerp(rect.x, rect.x + rect.width, x); float yout = UVLerp(rect.y, rect.y + rect.height, y); return new Vector2(xout, […]

在OpenGL ES中绘制dynamic网格的更快捷的方法

我正在写一个3D游戏,这将包括一些dynamic的网格。 现在,我的代码如下所示: private float[] mVertices; private FloatBuffer mVertexBuffer; public void onDrawFrame(GL10 gl) { // first clear the screen of any previous drawing gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // initialize the matrix gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); // update the vertex data for (int vtx = 0; vtx < mVtxCount; ++vtx){ // fill in the x, y and z components of […]

拼接网格在一起

我有一个体素引擎,每块产生一个网格,现在我想我的网格是1个网格,但是如果我将它们创建为一个单独的网格,我就会失去分块数据的好处。 =这是我目前正在得到的 我需要消除差距,任何想法?

用Assimp和OpenGL奇怪的网格导入问题

使用assimp库将3D数据导入到OpenGL应用程序中。 我有关于索引的顶点的一些奇怪的问题: 如果我使用下面的代码来导入顶点索引: for (unsigned int t = 0; t < mesh->mNumFaces; ++t) { const struct aiFace * face = &mesh->mFaces[t]; if (face->mNumIndices == 3) { indices->push_back(face->mIndices[0]); indices->push_back(face->mIndices[1]); indices->push_back(face->mIndices[2]); } } 我得到以下结果: 相反,如果我使用下面的代码: for(int k = 0; k < 2 ; k++) { for (unsigned int t = 0; t < mesh->mNumFaces; ++t) { const […]

为什么物理引擎使用碰撞边界?

在游戏中使用物理引擎(如Bullet)时,通常需要为每个对象定义一个碰撞边界。 我是游戏开发的初学者,我不明白碰撞边缘的目的。 我的基本理解是,如果要有两个物体,每个物体的碰撞边界设置为0.01,那么当两个碰撞边界相互接触时会检测到碰撞,使得两个物体之间的间隙实际上是0.02。 但是,为什么不把碰撞边界设置为0,并且在两个物体的实际表面碰撞时引起碰撞? 物理学就是这样运作的。 一个猜测是以下。 如果一个立方体的边距为0.01,那么每当另一个物体的一部分从物体表面存在0到0.01之间时,就会检测到碰撞。 这给出了错误的模拟空间,因此如果它在对象通过立方体的碰撞边界时(因为模拟步长很长)而“丢失”了点,那么当物体接近时,它仍然有时间检测碰撞立方体的表面,在0.01的范围内。 否则,如果边距为零,仿真中错过了碰撞,则可能会出现两个实体占据相同空间的情况,这可能会导致问题。 这个猜测是正确的吗? 还是有另一个原因? 谢谢!

科拉达怎么了?

几年前,看起来COLLADA将是一件相当大的事情,也许最后是一个相当标准化的格式,用于从DCC包中获取3D资产到游戏的工具管道中。 对于一个独立开发者来说,这看起来是个不错的select,他们不想通过编写自定义导出插件来将自己locking在一个3D包中。 但是我最近没有听说这个。 感觉软件,谁支持他们的最大/玛雅出口商和FCollada库格式似乎已经撤回这些工具的任何免费版本。 COLLADA最近看到这么多用途吗? 有没有免费/廉价的库/工具来协助处理这种格式,还是人们只是自己阅读原始的XML? 或者现在有一个更好的select – 对于一个独立开发者来说,他们希望从潜在的Max,Maya或Blender中获得模型/animation到他们的引擎中。 – FBX? 别的东西?