如何检测webgl中的碰撞,而不使用像three.js这样的库?如何检测webgl中的碰撞?
回答
如何检测碰撞的WebGL
你不知道。像OpenGL一样,WebGL仅用于绘制东西。它没有管理一个场景,它没有“对象”的概念或像碰撞这样的高级事物。这些都是关于点,线,三角形和着色器的。
任何与场景管理或碰撞有关的事情都不在WebGL(和OpenGL)的范围之内。
一个简单的方法来在GPU上进行射线碰撞检测。签出关于这个话题的以下博文。
http://blog.xeolabs.com/ray-picking-in-scenejs
的主要思想是使用保存的代替色彩的对象ID的着色器来渲染场景到纹理(使用FBO)。然后,您可以非常快地在此纹理中查找以查看光线与之发生什么碰撞。
这仅适用于测试来自视角或非遮挡几何体的光线。 – datenwolf
是的,该解决方案只适用于射线碰撞,但问题并未说明需要什么样的碰撞检测。我的观点是,一些碰撞测试可以在GPU上完美运行(但它不是一个通用的解决方案),谢谢 – Mortennobel
,但它在scene.js中。我想在没有任何库的情况下做到这一点 –
由于星期日我试图解决同样的问题。尽管www中有很多信息,但我无法使用它来处理我的示例程序。只要我解决它,我会在这里发布我的例子。
我最后的尝试是为webGL使用glu-unProject端口。这其中需要下列参数:
功能(WINX,酒味,winZ,模型,凸出,视图,objPos)
我试图直接从我的场景绘制函数调用这个函数用于测试目的。
var pMatrix = new mat4.ortho(iL, iR, iB, iT, fNearZ, farZ);
var mvMatrix = new mat4.create();
mat4.identity(mvMatrix);
mat4.translate(mvMatrix,[0,0,-40]);
var oMouseMatrix = mat4.create();
mat4.identity(oMouseMatrix);
//Rotate eye :-S
mat4.rotate(oMouseMatrix,((this.fAnimationXAngle/10) * Math.PI)/360.0,[0,1,0]);
mat4.rotate(oMouseMatrix,((this.fAnimationYAngle/10) * Math.PI)/360.0,[1,0,0]);
mat4.multiply(oMouseMatrix, mvMatrix, mvMatrix);
//Rotate model
mat4.rotateX(mvMatrix,this.fRotX * Math.PI/180.0);
mat4.rotateY(mvMatrix,this.fRotY * Math.PI/180.0);
mat4.rotateZ(mvMatrix,this.fRotZ * Math.PI/180.0);
var aTest = this.unProject(
this.pLastMouse.x,
this.pLastMouse.y,
0,
mvMatrix,
pMatrix,
[0,0,this.iWidth,this.iHeight]
);
this.iWidth & this.iHeight是画布和视口宽度/高度 - this.pLastMouse.x & .Y是画布
zI.debug(aTest);
内的鼠标坐标但结果是完全废话。我想我的代码中有几个错误。我刚刚在上周五开始玩WebGL。我不想早早放弃,但自那时以来,我解决了许多问题,但这个让我发疯。
在openGL中,对我来说更容易。
谢谢,我会试试看 –
我建议以下网页(可惜只有德文版)http://www.peter-strohm.de/webgl/webgltutorial8.php
我们能够实现碰撞检测,并使用ID映射(例如显示工具提示使用的附加信息的服务器甚至可以进行API调用场景中的某个对象)。
我希望这会有所帮助。
- 1. 如何检测UIImageView碰撞
- 2. AS3:如何检测碰撞?
- 3. 碰撞检测 - 如何?
- 4. 如何检测碰撞力?
- 5. 碰撞检测
- 6. 如何检测three.js中的碰撞?
- 7. 碰撞检测不检测
- 8. java中的碰撞检测
- 9. Unity3D中的碰撞检测
- 10. Android中的碰撞检测
- 11. pygame中的碰撞检测
- 12. paper.js中的碰撞检测
- 13. cocos2d中的碰撞检测
- 14. pygame中的碰撞检测
- 15. 碰撞检测和碰撞响应
- 16. Cocos2D碰撞检测
- 17. GameQuery碰撞检测
- 18. 检测墙碰撞
- 19. 检测碰撞JavaScript
- 20. Java碰撞检测
- 21. XNA碰撞检测
- 22. 碰撞检测Javascript
- 23. 碰撞检测Swift
- 24. 在OpenGL中检测碰撞
- 25. 在javascript中碰撞检测
- 26. 如何在检测到碰撞后处理碰撞
- 27. 如何检测与曲线的碰撞
- 28. 如何检测与JS的碰撞
- 29. ImageView的碰撞检测
- 30. 的Java傍碰撞检测
这可能很难做到。无论如何,你为什么不想为他的图书馆? –
我也是反库 – ajax333221
@ ajax333221图书馆让我们的生活变得更加轻松。:) –