mirror of
https://github.com/bulletphysics/bullet3.git
synced 2026-08-29 14:38:27 +00:00
1) allow to render deformables in 'getCameraImage', for TinyRenderer (tested OK) and EGL (untested) 2) allow to have textures for deformables. See deformable_ball.py, deformable_anchor.py and deformable_torus.py for examples 3) deformables: allow to request simulation mesh data (even if there is a render mesh) See deformable_anchor.py for an example usage data = p.getMeshData(clothId, -1, flags=p.MESH_DATA_SIMULATION_MESH) 4) fix deletion of deformables, thanks to Fychuyan, https://github.com/bulletphysics/bullet3/pull/3048 5) allow to enable and disable double-sided rendering, p.changeVisualShape(objectUid, linkIndex, flags=p.VISUAL_SHAPE_DOUBLE_SIDED) 6) fix GripperGraspExample, model not found 7) Fix deformable anchor not attaching to multibody with object unique id of 0 8) Fix issue with assignment of unique ids in TinyRenderer/EGL renderer (always use broadphase uid) 9) Avoid crash/issue of simulation with pinned vertices (mass 0) in btDeformableBackwardEulerObjective::applyExplicitForce 10) Store uv/normal in btSoftBody::RenderNode to allow textured meshes 11) (uncomment in btSoftBodyHelpers.cpp): dump vertices and indices in obj wavefront format, when loading a VTK file, for quicker creation of a (textured) surface mesh 12) allow interpolateRenderMesh also for old position-based soft bodies (not only the shiny new FEM deformables) 13) fix a few premake targets 14) update build_visual_studio_vr_pybullet_double_cmake.bat so it suits c:\python37 and installs locally for local install of Bullet, see also this example https://github.com/erwincoumans/hello_bullet_cmake
58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
import pybullet as p
|
|
import time
|
|
import math
|
|
import pybullet_data
|
|
|
|
|
|
|
|
cid = p.connect(p.SHARED_MEMORY)
|
|
if (cid < 0):
|
|
p.connect(p.GUI)
|
|
|
|
p.setAdditionalSearchPath(pybullet_data.getDataPath())
|
|
p.setPhysicsEngineParameter(numSolverIterations=10)
|
|
p.setTimeStep(1. / 120.)
|
|
logId = p.startStateLogging(p.STATE_LOGGING_PROFILE_TIMINGS, "visualShapeBench.json")
|
|
#useMaximalCoordinates is much faster then the default reduced coordinates (Featherstone)
|
|
p.loadURDF("plane100.urdf", useMaximalCoordinates=True)
|
|
#disable rendering during creation.
|
|
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 0)
|
|
p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0)
|
|
#disable tinyrenderer, software (CPU) renderer, we don't use it here
|
|
p.configureDebugVisualizer(p.COV_ENABLE_TINY_RENDERER, 0)
|
|
|
|
shift = [0, -0.02, 0]
|
|
meshScale = [0.1, 0.1, 0.1]
|
|
#the visual shape and collision shape can be re-used by all createMultiBody instances (instancing)
|
|
visualShapeId = p.createVisualShape(shapeType=p.GEOM_MESH,
|
|
fileName="duck.obj",
|
|
rgbaColor=[1, 1, 1, 1],
|
|
specularColor=[0.4, .4, 0],
|
|
visualFramePosition=shift,
|
|
meshScale=meshScale)
|
|
collisionShapeId = p.createCollisionShape(shapeType=p.GEOM_MESH,
|
|
fileName="duck_vhacd.obj",
|
|
collisionFramePosition=shift,
|
|
meshScale=meshScale)
|
|
|
|
rangex = 1
|
|
rangey = 1
|
|
for i in range(rangex):
|
|
for j in range(rangey):
|
|
p.createMultiBody(baseMass=1,
|
|
baseInertialFramePosition=[0, 0, 0],
|
|
baseCollisionShapeIndex=collisionShapeId,
|
|
baseVisualShapeIndex=visualShapeId,
|
|
basePosition=[((-rangex / 2) + i) * meshScale[0] * 2,
|
|
(-rangey / 2 + j) * meshScale[1] * 2, 1],
|
|
useMaximalCoordinates=True)
|
|
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 1)
|
|
p.stopStateLogging(logId)
|
|
p.setGravity(0, 0, -10)
|
|
p.setRealTimeSimulation(1)
|
|
|
|
colors = [[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 1], [1, 1, 1, 1]]
|
|
currentColor = 0
|
|
|
|
while (1):
|
|
time.sleep(1./240.) |