Я новичок в Bullet и всех материалах 3D и phisycs, поэтому не сердитесь :) Я не хочу создавать большую статическую жесткую сферу и немного динамичную внутри. Я хочу использовать большой, как бутылку, так что маленькая сфера может перемещаться внутри, но не может покидать сферу, кроме одной точки сверху. Я написал 2 модели в Blender (конечно, я сделал отверстие в большой сфере), создал мир и разместил объекты внутри. Но когда я запускаю приложение, маленькая сфера просто выкидывает из большой с экстремальной скоростью. Также я использую Bullet с библиотекой GDX для Android, если это помогает.Мяч в шаре с использованием Bullet
Этот код инициализирует мир.
public final btCollisionConfiguration collisionConfiguration;
public final btCollisionDispatcher dispatcher;
public final btBroadphaseInterface broadphase;
public final btConstraintSolver solver;
public final btCollisionWorld collisionWorld;
public PerformanceCounter performanceCounter;
public final Vector3 gravity;
public int maxSubSteps = 5;
public World() {
Vector3 gravity = new Vector3(0, -10, 0);
collisionConfiguration = new btDefaultCollisionConfiguration();
dispatcher = new btCollisionDispatcher(collisionConfiguration);
broadphase = new btDbvtBroadphase();
solver = new btSequentialImpulseConstraintSolver();
collisionWorld = new btDiscreteDynamicsWorld(dispatcher, broadphase, solver, collisionConfiguration);
((btDynamicsWorld)collisionWorld).setGravity(gravity);
this.gravity = gravity;
}
И некоторый код для создания большой сферы
final StillModel sphereS = ModelLoaderRegistry.loadStillModel(Gdx.files.internal("data/Ssphere.obj"));
sphereS.subMeshes[0].getMesh().scale(3f, 3f, 3f);
final BoundingBox sphereSBounds = new BoundingBox();
sphereS.getBoundingBox(sphereSBounds);
final Constructor sphereSConstructor = new Constructor(sphereS, 0f, new btSphereShape(sphereSBounds.getDimensions().x));
sphereSConstructor.bodyInfo.setM_restitution(1f);
world.addConstructor("sphereS", sphereSConstructor);
код для маленькой сферы
final StillModel sphereModel = ModelLoaderRegistry.loadStillModel(Gdx.files.internal("data/sphere.obj"));
sphereModel.subMeshes[0].getMesh().scale(0.8f, 0.8f, 0.8f);
final BoundingBox sphereBounds = new BoundingBox();
sphereModel.getBoundingBox(sphereBounds);
final Constructor sphereConstructor = new Constructor(sphereModel, 0.25f, new btSphereShape(sphereBounds.getDimensions().x * 0.5f));
sphereConstructor.bodyInfo.setM_restitution(1f);
world.addConstructor("sphere", sphereConstructor);
Конструктор класса просто создает btRigidBodyConstructionInfo и btCollisionShape объекты, конструирует сферы и место там в Мир.
Итак, не могли бы вы рассказать мне, как я могу создать пустую сферу с шаром внутри?
P.S. Пожалуйста, не говори мне Google, я уже сделал это
P.P.S Извините за мой английский
Пожалуй, мало думает, сфера подмигнули пулю;) Но более серьезно, как вы построить большой шар, он пустой внутри? – flup
думаю. Раньше я читал некоторые руководства. Пример http://blog.pdark.de/2007/11/12/hollow-sphere-in-blender/ – massaraksh111