Я новичок в физике пули и уже сталкиваюсь с раздражающей проблемой с формами, ... У меня есть этот класс Java, который расширяет ModelInstance: < /p>
public class CustomModel extends ModelInstance implements Disposable {
RigidBodyInfo rigidBodyInfo;
btRigidBody rigidBody;
//btBvhTriangleMeshShape shape;
btCollisionShape shape;
btTriangleIndexVertexArray vertexArray;
public CustomModel(Model model,btDynamicsWorld world,float mass){
super(model);
vertexArray = new btTriangleIndexVertexArray(model.meshParts);
if(mass==0){
shape=new btBvhTriangleMeshShape(vertexArray,true);
} else{
shape=new btGImpactMeshShape(vertexArray);
shape.setLocalScaling(new Vector3(1,1,1));
shape.setMargin(0);
((btGImpactMeshShape)shape).updateBound();
}
rigidBodyInfo=new RigidBodyInfo(mass,shape);
rigidBody = new btRigidBody(rigidBodyInfo);
rigidBody.setRestitution(0);
rigidBody.setMotionState(new GameMotionState(this));
world.addRigidBody(rigidBody);
//rigidBody.setActivationState(Collision.DISABLE_DEACTIVATION);
}
public btRigidBody getRigidBody(){
return rigidBody;
}
public void setTranslation(Vector3 vector3){
transform.setTranslation(vector3);
rigidBody.setWorldTransform(transform);
rigidBody.setLinearVelocity(new Vector3());
rigidBody.setActivationState(Collision.ACTIVE_TAG);
}
public void setTranslation(float x,float y,float z){
transform.setTranslation(x,y,z);
rigidBody.setWorldTransform(transform);
rigidBody.setLinearVelocity(new Vector3());
rigidBody.setActivationState(Collision.ACTIVE_TAG);
}
@Override
public void dispose() {
rigidBody.dispose();
rigidBodyInfo.dispose();
if(vertexArray!=null)
vertexArray.dispose();
shape.dispose();
}
}
< /code>
Проблема возникает, когда я добавляю два ящика с использованием модели builder.createbox, две коробки не сталкиваются друг с другом ..
Я читал, что btbvhtrianglemeshshape не только для статических тел, а также я пробовал пул.
Model cubeModel = new ModelBuilder().createBox(0.25f,0.25f,0.25f,material,VertexAttributes.Usage.Position|VertexAttributes.Usage.Normal|VertexAttributes.Usage.TextureCoordinates);
modelInstance = new CustomModel(cubeModel,world,0);
cube = new CustomModel(cubeModel,world,1);
cube.setTranslation(0f,10,0f);
< /code>
Затем рендеринг обычно ..
girtbodyinfo class: < /p>
public class RigidBodyInfo extends btRigidBody.btRigidBodyConstructionInfo {
public static Vector3 tempV=new Vector3();
public RigidBodyInfo(float mass,btCollisionShape shape){
super(mass,null,shape,calc(mass,shape));
}
public static Vector3 calc(float mass,btCollisionShape shape){
shape.calculateLocalInertia(mass,tempV);
return tempV;
}
@Override
public void dispose() {
super.dispose();
}
}
< /code>
Я пробовал:
bullet.obtainstaticnodeshape()
, и это хорошо работает с Btboxshape, но мне это не нужно ... < /p>
Подробнее здесь: https://stackoverflow.com/questions/774 ... -rigidbody
Libgdx-bullet btgimpactmeshshape не работает для жесткого тела ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1755394651
Anonymous
Я новичок в физике пули и уже сталкиваюсь с раздражающей проблемой с формами, ... У меня есть этот класс Java, который расширяет ModelInstance: < /p>
public class CustomModel extends ModelInstance implements Disposable {
RigidBodyInfo rigidBodyInfo;
btRigidBody rigidBody;
//btBvhTriangleMeshShape shape;
btCollisionShape shape;
btTriangleIndexVertexArray vertexArray;
public CustomModel(Model model,btDynamicsWorld world,float mass){
super(model);
vertexArray = new btTriangleIndexVertexArray(model.meshParts);
if(mass==0){
shape=new btBvhTriangleMeshShape(vertexArray,true);
} else{
shape=new btGImpactMeshShape(vertexArray);
shape.setLocalScaling(new Vector3(1,1,1));
shape.setMargin(0);
((btGImpactMeshShape)shape).updateBound();
}
rigidBodyInfo=new RigidBodyInfo(mass,shape);
rigidBody = new btRigidBody(rigidBodyInfo);
rigidBody.setRestitution(0);
rigidBody.setMotionState(new GameMotionState(this));
world.addRigidBody(rigidBody);
//rigidBody.setActivationState(Collision.DISABLE_DEACTIVATION);
}
public btRigidBody getRigidBody(){
return rigidBody;
}
public void setTranslation(Vector3 vector3){
transform.setTranslation(vector3);
rigidBody.setWorldTransform(transform);
rigidBody.setLinearVelocity(new Vector3());
rigidBody.setActivationState(Collision.ACTIVE_TAG);
}
public void setTranslation(float x,float y,float z){
transform.setTranslation(x,y,z);
rigidBody.setWorldTransform(transform);
rigidBody.setLinearVelocity(new Vector3());
rigidBody.setActivationState(Collision.ACTIVE_TAG);
}
@Override
public void dispose() {
rigidBody.dispose();
rigidBodyInfo.dispose();
if(vertexArray!=null)
vertexArray.dispose();
shape.dispose();
}
}
< /code>
Проблема возникает, когда я добавляю два ящика с использованием модели builder.createbox, две коробки не сталкиваются друг с другом ..
Я читал, что btbvhtrianglemeshshape не только для статических тел, а также я пробовал пул.
Model cubeModel = new ModelBuilder().createBox(0.25f,0.25f,0.25f,material,VertexAttributes.Usage.Position|VertexAttributes.Usage.Normal|VertexAttributes.Usage.TextureCoordinates);
modelInstance = new CustomModel(cubeModel,world,0);
cube = new CustomModel(cubeModel,world,1);
cube.setTranslation(0f,10,0f);
< /code>
Затем рендеринг обычно ..
girtbodyinfo class: < /p>
public class RigidBodyInfo extends btRigidBody.btRigidBodyConstructionInfo {
public static Vector3 tempV=new Vector3();
public RigidBodyInfo(float mass,btCollisionShape shape){
super(mass,null,shape,calc(mass,shape));
}
public static Vector3 calc(float mass,btCollisionShape shape){
shape.calculateLocalInertia(mass,tempV);
return tempV;
}
@Override
public void dispose() {
super.dispose();
}
}
< /code>
Я пробовал:
bullet.obtainstaticnodeshape()
, и это хорошо работает с Btboxshape, но мне это не нужно ... < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/77421386/libgdx-bullet-btgimpactmeshshape-doesnt-work-for-rigidbody[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия