3d Game Walkman

3d图形渲染,网络引擎 — tonykee's Blog
随笔 - 45, 文章 - 0, 评论 - 309, 引用 - 0
数据加载中……

今天试了试newton的NewtonTreeCollisionAdd,发现引擎的bug,似乎还没有解决

把cube形状 静态的collision绘制出来发现少了一些face,这决不是显示的问题,缺少的部分也不能进行碰撞检测
查了官方网站,似乎这个问题并没有得到解决,至少在目前的1.53版中依然存在这个问题。
http://www.newtondynamics.com/forum/viewtopic.php?t=3176&start=0&postdays=0&postorder=asc&highlight=newtontreecollisionaddface

另外,在论坛上我得知做newton的人只有一个,虽然有些bug,但还真的是很佩服作者,这张帖子的回复,显得作者十分的敬业,态度非常的诚恳,这个问题回头我还得再去确认一下。






   GraphicObject *teapot = new GraphicObject("box");
   GraphicObjects.push_back(teapot);
   
   D3DXCreateBox(gd3dDevice, 5.0f, 5.0f, 5.0f, &(teapot->pMesh), NULL);
   //D3DXCreateSphere(gd3dDevice, 5.0f, 5, 5, &(teapot->pMesh), NULL);
   //D3DXCreateTeapot(gd3dDevice, &(teapot->pMesh), NULL);
   //D3DXCreateBox(gd3dDevice, 10.0f, 10.0, 10.0f, &(teapot->pMesh), NULL);

   
   WORD*      pIndices;
   LK3D::Vertex::Normal_Vertex*    pVertices;

   collision = NewtonCreateTreeCollision(nWorld, NULL);
   NewtonTreeCollisionBeginBuild(collision);

   DWORD numFaces = pGraphicObj->pMesh->GetNumFaces();
   teapot->pMesh->LockIndexBuffer(0, (void**)&pIndices);
   teapot->pMesh->LockVertexBuffer(0, (void**)&pVertices);

   for( DWORD i=0; i<numFaces; i++ )
   {

    D3DXVECTOR3 face[3];
    face[0] = D3DXVECTOR3(pVertices[pIndices[3*i+0]]._x, pVertices[pIndices[3*i+0]]._y, pVertices[pIndices[3*i+0]]._z);
    face[1] = D3DXVECTOR3(pVertices[pIndices[3*i+1]]._x, pVertices[pIndices[3*i+1]]._y, pVertices[pIndices[3*i+1]]._z);
    face[2] = D3DXVECTOR3(pVertices[pIndices[3*i+2]]._x, pVertices[pIndices[3*i+2]]._y, pVertices[pIndices[3*i+2]]._z);
    //boxlocation.TransformTriplex (face, sizeof (dVector), face, sizeof (dVector), 3);
    int sz = sizeof (D3DXVECTOR3);
    NewtonTreeCollisionAddFace(collision, 3, (FLOAT*)&face[0].x, sz, 0);
   }

   teapot->pMesh->UnlockVertexBuffer();
   teapot->pMesh->UnlockIndexBuffer();
   NewtonTreeCollisionEndBuild(collision, 1);

用上cube发现少了三个面,用上其它的几何体也都是同样的问题,有缺失的部分
如果:pVertices[pIndices[3*i+0]]._x + 0.001缺失的部分又会少一点,很奇怪

posted on 2008-06-02 17:08 李侃 阅读(923) 评论(5)  编辑 收藏 引用 所属分类: 物理引擎

评论

# re: 今天试了试newton的NewtonTreeCollisionAdd,发现引擎的bug,似乎还没有解决  回复  更多评论   

推荐用PhyX,nVidia已经收购了它,很有前途的一个引擎!..
2008-06-11 16:43 | xiao7cn

# re: 今天试了试newton的NewtonTreeCollisionAdd,发现引擎的bug,似乎还没有解决  回复  更多评论   

呵呵,这个我知道,只是觉得phyx太过商业化了,而且需要那个什么物理卡,真不知道没有那物理卡性能会怎么样?
2008-06-11 22:08 | 李侃

# re: 今天试了试newton的NewtonTreeCollisionAdd,发现引擎的bug,似乎还没有解决  回复  更多评论   

给你看另外一个东西
http://www.cnbeta.com/articles/57171.htm

你觉得这个大家伙怎么样?够成熟吧
2008-06-11 23:01 | 李侃

# re: 今天试了试newton的NewtonTreeCollisionAdd,发现引擎的bug,似乎还没有解决  回复  更多评论   

刚下了physX,里面的布料效果很吸引人,没有物理显卡,跑的也还算流畅。
文档很齐全,看来是得认真考虑考虑了
2008-06-12 00:04 | 李侃

# re: 今天试了试newton的NewtonTreeCollisionAdd,发现引擎的bug,似乎还没有解决  回复  更多评论   

PhysX的软件实现就很好了,被nVidia收购以后,可以直接在显卡上加速了,吊吧。
2008-06-16 08:57 | xiao7cn

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理