大佬教程收集整理的这篇文章主要介绍了android – 如何在libgdx中获取模型实例的边界框?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我现在正在尝试实现光线拾取,但我发现所有100个实例都返回原始模型的相同边界框.为什么不为每个实例计算实际的边界框?
创建模型和实例:
public static void createModel() { ModelBuilder modelBuilder = new ModelBuilder(); modelBuilder.begin(); MeshPartBuilder tileBuilder; tileBuilder = modelBuilder.part("top",GL10.GL_TRIANGLES,Usage.Position | Usage.Normal | Usage.TextureCoordinates,new Material(ColorAttribute.createDiffuse(Color.WHITE))); tileBuilder.rect(-0.45f,0.1f,0.45f,-0.45f,0f,1f,0f); tileBuilder = modelBuilder.part("bottom",Usage.Position | Usage.Normal,... modelTile = modelBuilder.end(); } public void createModelInstance(com.badlogic.gdx.assets.AssetManager assetManager) { Texture texTile = assetManager.get("textures/" + textureFile,Texture.class); Material mat = new Material(TextureAttribute.createDiffuse(texTilE)); modelInstance = new ModelInstance(modelTilE); modelInstance.nodes.get(0).parts.get(0).material.set(mat); }
移动模型实例:
public void setCoordinates(Boolean animate,float x,float y,float z) { modelInstance.transform.setToTranslation(x,y,z); modelInstance.calculateTransforms(); }
射线拣选尝试:
public Boolean pickTile(int x,int y) { cam.update(); Ray ray = cam.getPickRay(x,y); BoundingBox bb = new BoundingBox(); for (int i=0;i<gameData.tiles.length;i++) { Log.i("ltower","checking " + i); gameData.tiles[i].getModelInstance().calculateBoundingBox(bb); Log.i("ltower","BB: " + bb.getCenter().x + "," + bb.getCenter().y + "," + bb.getCenter().z); if (Intersector.intersectRayBoundsFast(ray,bb)) { gameData.tiles[i].SELEct(); return true; } } return false; }
日志:
01-05 05:27:18.934: I/ltower(2175): checking 0 01-05 05:27:18.984: I/ltower(2175): BB: 0.0,0.05,0.0 01-05 05:27:19.024: I/ltower(2175): checking 1 01-05 05:27:19.024: I/ltower(2175): BB: 0.0,0.0 01-05 05:27:19.044: I/ltower(2175): checking 2 01-05 05:27:19.064: I/ltower(2175): BB: 0.0,0.0 01-05 05:27:19.064: I/ltower(2175): checking 3 01-05 05:27:19.064: I/ltower(2175): BB: 0.0,0.0 01-05 05:27:19.064: I/ltower(2175): checking 4 01-05 05:27:19.064: I/ltower(2175): BB: 0.0,0.0 01-05 05:27:19.064: I/ltower(2175): checking 5 01-05 05:27:19.104: I/ltower(2175): BB: 0.0,0.0 01-05 05:27:19.104: I/ltower(2175): checking 6 01-05 05:27:19.104: I/ltower(2175): BB: 0.0,0.0 ...
这意味着您需要使用BoundingBox.mul()将模型实例的位置,比例和旋转应用于边界框.
以上是大佬教程为你收集整理的android – 如何在libgdx中获取模型实例的边界框?全部内容,希望文章能够帮你解决android – 如何在libgdx中获取模型实例的边界框?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。