aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt')
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt184
1 files changed, 138 insertions, 46 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index a8a4ff5..5792ae6 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -1,68 +1,113 @@
1PROBLEMS TO LOOK INTO
2=================================================
3Nebadon vehicle ride, get up, ride again. Second time vehicle does not act correctly.
4 Have to rez new vehicle and delete the old to fix situation.
5Hitting RESET on Nebadon's vehicle while riding causes vehicle to get into odd
6 position state where it will not settle onto ground properly, etc
7Two of Nebadon vehicles in a sim max the CPU. This is new.
8A sitting, active vehicle bobs up and down a small amount.
9
1CURRENT PRIORITIES 10CURRENT PRIORITIES
2================================================= 11=================================================
3Redo BulletSimAPI to allow native C# implementation of Bullet option. 12Use the HACD convex hull routine in Bullet rather than the C# version.
4Avatar movement 13 Speed up hullifying large meshes.
5 flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle
6 walking up stairs is not calibrated correctly (stairs out of Kepler cabin)
7 avatar capsule rotation completed
8llMoveToTarget
9Enable vehicle border crossings (at least as poorly as ODE) 14Enable vehicle border crossings (at least as poorly as ODE)
10 Terrain skirts 15 Terrain skirts
11 Avatar created in previous region and not new region when crossing border 16 Avatar created in previous region and not new region when crossing border
12 Vehicle recreated in new sim at small Z value (offset from root value?) (DONE) 17 Vehicle recreated in new sim at small Z value (offset from root value?) (DONE)
13Vehicle movement on terrain smoothness 18Deleting a linkset while standing on the root will leave the physical shape of the root behind.
19 Not sure if it is because standing on it. Done with large prim linksets.
20Linkset child rotations.
21 Nebadon spiral tube has middle sections which are rotated wrong.
22 Select linked spiral tube. Delink and note where the middle section ends up.
23Refarb compound linkset creation to create a pseudo-root for center-of-mass
24 Let children change their shape to physical indendently and just add shapes to compound
25Vehicle angular vertical attraction
26vehicle angular banking
27Center-of-gravity
28Vehicle angular deflection
29 Preferred orientation angular correction fix
30when should angular and linear motor targets be zeroed? when selected?
31 Need a vehicle.clear()? Or an 'else' in prestep if not physical.
32Teravus llMoveToTarget script debug
33 Mixing of hover, buoyancy/gravity, moveToTarget, into one force
34 Setting hover height to zero disables hover even if hover flags are on (from SL wiki)
35limitMotorUp calibration (more down?)
36llRotLookAt
37llLookAt
38Avatars walking up stairs (HALF DONE)
39Avatar movement
40 flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE)
41 walking up stairs is not calibrated correctly (stairs out of Kepler cabin) (DONE)
42 avatar capsule rotation completed (NOT DONE - Bullet's capsule shape is not the solution)
14Vehicle script tuning/debugging 43Vehicle script tuning/debugging
15 Avanti speed script 44 Avanti speed script
16 Weapon shooter script 45 Weapon shooter script
17limitMotorUp calibration (more down?) 46Move material definitions (friction, ...) into simulator.
18Boats float low in the water
19Add material densities to the material types. 47Add material densities to the material types.
20 48One sided meshes? Should terrain be built into a closed shape?
21CRASHES 49 When meshes get partially wedged into the terrain, they cannot push themselves out.
22================================================= 50 It is possible that Bullet processes collisions whether entering or leaving a mesh.
2320121129.1411: editting/moving phys object across region boundries causes crash 51 Ref: http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=4869
24 getPos-> btRigidBody::upcast -> getBodyType -> BOOM
2520121128.1600: mesh object not rezzing (no physics mesh).
26 Causes many errors. Doesn't stop after first error with box shape.
27 Eventually crashes when deleting the object.
2820121206.1434: rez Sam-pan into OSGrid BulletSim11 region
29 Immediate simulator crash. Mono does not output any stacktrace and
30 log just stops after reporting taint-time linking of the linkset.
31 52
32VEHICLES TODO LIST: 53VEHICLES TODO LIST:
33================================================= 54=================================================
34Angular motor direction is global coordinates rather than local coordinates 55LINEAR_MOTOR_DIRECTION values should be clamped to reasonable numbers.
56 What are the limits in SL?
57 Same for other velocity settings.
58UBit improvements to remove rubber-banding of avatars sitting on vehicle child prims:
59 https://github.com/UbitUmarov/Ubit-opensim
35Border crossing with linked vehicle causes crash 60Border crossing with linked vehicle causes crash
61 20121129.1411: editting/moving phys object across region boundries causes crash
62 getPos-> btRigidBody::upcast -> getBodyType -> BOOM
36Vehicles (Move smoothly) 63Vehicles (Move smoothly)
37Add vehicle collisions so IsColliding is properly reported.
38 Needed for banking, limitMotorUp, movementLimiting, ...
39VehicleAddForce is not scaled by the simulation step but it is only
40 applied for one step. Should it be scaled?
41Some vehicles should not be able to turn if no speed or off ground. 64Some vehicles should not be able to turn if no speed or off ground.
65What to do if vehicle and prim buoyancy differ?
42Cannot edit/move a vehicle being ridden: it jumps back to the origional position. 66Cannot edit/move a vehicle being ridden: it jumps back to the origional position.
43Neb car jiggling left and right 67Neb car jiggling left and right
44 Happens on terrain and any other mesh object. Flat cubes are much smoother. 68 Happens on terrain and any other mesh object. Flat cubes are much smoother.
45 This has been reduced but not eliminated. 69 This has been reduced but not eliminated.
46Implement referenceFrame for all the motion routines. 70Implement referenceFrame for all the motion routines.
47Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE. 71For limitMotorUp, use raycast down to find if vehicle is in the air.
48 Verify that angular motion specified around Z moves in the vehicle coordinates.
49Verify llGetVel() is returning a smooth and good value for vehicle movement. 72Verify llGetVel() is returning a smooth and good value for vehicle movement.
50llGetVel() should return the root's velocity if requested in a child prim. 73llGetVel() should return the root's velocity if requested in a child prim.
51Implement function efficiency for lineaar and angular motion. 74Implement function efficiency for lineaar and angular motion.
52After getting off a vehicle, the root prim is phantom (can be walked through) 75After getting off a vehicle, the root prim is phantom (can be walked through)
53 Need to force a position update for the root prim after compound shape destruction 76 Need to force a position update for the root prim after compound shape destruction
54Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint) 77Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint)
55For limitMotorUp, use raycast down to find if vehicle is in the air.
56Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties(). 78Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties().
57 A kludge that isn't fixing the real problem of Bullet adding extra motion. 79 A kludge that isn't fixing the real problem of Bullet adding extra motion.
58Incorporate inter-relationship of angular corrections. For instance, angularDeflection 80Incorporate inter-relationship of angular corrections. For instance, angularDeflection
59 and angularMotorUp will compute same X or Y correction. When added together 81 and angularMotorUp will compute same X or Y correction. When added together
60 creates over-correction and over-shoot and wabbling. 82 creates over-correction and over-shoot and wabbling.
83Vehicle attributes are not restored when a vehicle is rezzed on region creation
84 Create vehicle, setup vehicle properties, restart region, vehicle is not reinitialized.
61 85
62BULLETSIM TODO LIST: 86GENERAL TODO LIST:
63================================================= 87=================================================
88Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects.
89 Regular triangle meshes don't do physical collisions.
90Resitution of a prim works on another prim but not on terrain.
91 The dropped prim doesn't bounce properly on the terrain.
92Add a sanity check for PIDTarget location.
93Level-of-detail for mesh creation. Prims with circular interiors require lod of 32.
94 Is much saved with lower LODs? At the moment, all set to 32.
95Collisions are inconsistant: arrows are supposed to hit and report collision. Often don't.
96 If arrow show at prim, collision reported about 1/3 of time. If collision reported,
97 both arrow and prim report it. The arrow bounces off the prim 9 out of 10 times.
98 Shooting 5m sphere "arrows" at 60m/s.
99llMoveToTarget objects are not effected by gravity until target is removed.
100Compute CCD parameters based on body size
101Can solver iterations be changed per body/shape? Can be for constraints but what
102 about regular vehicles?
103Implement llSetPhysicalMaterial.
104 extend it with Center-of-mass, rolling friction, density
105Implement llSetForceAndTorque.
106Change BSPrim.moveToTarget to used forces rather than changing position
107 Changing position allows one to move through walls
64Implement an avatar mesh shape. The Bullet capsule is way too limited. 108Implement an avatar mesh shape. The Bullet capsule is way too limited.
65 Consider just hand creating a vertex/index array in a new BSShapeAvatar. 109 Consider just hand creating a vertex/index array in a new BSShapeAvatar.
110Verify/fix phantom, volume-detect objects do not fall to infinity. Should stop at terrain.
66Revisit CollisionMargin. Builders notice the 0.04 spacing between prims. 111Revisit CollisionMargin. Builders notice the 0.04 spacing between prims.
67Duplicating a physical prim causes old prim to jump away 112Duplicating a physical prim causes old prim to jump away
68 Dup a phys prim and the original become unselected and thus interacts w/ selected prim. 113 Dup a phys prim and the original become unselected and thus interacts w/ selected prim.
@@ -86,6 +131,8 @@ setForce should set a constant force. Different than AddImpulse.
86Implement raycast. 131Implement raycast.
87Implement ShapeCollection.Dispose() 132Implement ShapeCollection.Dispose()
88Implement water as a plain so raycasting and collisions can happen with same. 133Implement water as a plain so raycasting and collisions can happen with same.
134Add collision penetration return
135 Add field passed back by BulletSim.dll and fill with info in ManifoldConstact.GetDistance()
89Add osGetPhysicsEngineName() so scripters can tell whether BulletSim or ODE 136Add osGetPhysicsEngineName() so scripters can tell whether BulletSim or ODE
90 Also osGetPhysicsEngineVerion() maybe. 137 Also osGetPhysicsEngineVerion() maybe.
91Linkset.Position and Linkset.Orientation requre rewrite to properly return 138Linkset.Position and Linkset.Orientation requre rewrite to properly return
@@ -107,6 +154,12 @@ Physical and phantom will drop through the terrain
107 154
108LINKSETS 155LINKSETS
109====================================================== 156======================================================
157Child prims do not report collisions
158Allow children of a linkset to be phantom:
159 http://opensim-dev.2196679.n2.nabble.com/Setting-a-single-child-prim-to-Phantom-tp7578513.html
160 Add OS_STATUS_PHANTOM_PRIM to llSetLinkPrimitaveParamsFast.
161Editing a child of a linkset causes the child to go phantom
162 Move a child prim once when it is physical and can never move it again without it going phantom
110Offset the center of the linkset to be the geometric center of all the prims 163Offset the center of the linkset to be the geometric center of all the prims
111 Not quite the same as the center-of-gravity 164 Not quite the same as the center-of-gravity
112Linksets should allow collisions to individual children 165Linksets should allow collisions to individual children
@@ -117,11 +170,9 @@ LinksetCompound: when one of the children changes orientation (like tires
117Verify/think through scripts in children of linksets. What do they reference 170Verify/think through scripts in children of linksets. What do they reference
118 and return when getting position, velocity, ... 171 and return when getting position, velocity, ...
119Confirm constraint linksets still work after making all the changes for compound linksets. 172Confirm constraint linksets still work after making all the changes for compound linksets.
173Use PostTaint callback to do rebuilds for constraint linksets to reduce rebuilding
120Add 'changed' flag or similar to reduce the number of times a linkset is rebuilt. 174Add 'changed' flag or similar to reduce the number of times a linkset is rebuilt.
121 For compound linksets, add ability to remove or reposition individual child shapes. 175 For compound linksets, add ability to remove or reposition individual child shapes.
122Disable activity of passive linkset children.
123 Since the linkset is a compound object, the old prims are left lying
124 around and need to be phantomized so they don't collide, ...
125Speed up creation of large physical linksets 176Speed up creation of large physical linksets
126 For instance, sitting in Neb's car (130 prims) takes several seconds to become physical. 177 For instance, sitting in Neb's car (130 prims) takes several seconds to become physical.
127 REALLY bad for very large physical linksets (freezes the sim for many seconds). 178 REALLY bad for very large physical linksets (freezes the sim for many seconds).
@@ -131,25 +182,28 @@ Eliminate collisions between objects in a linkset. (LinksetConstraint)
131 182
132MORE 183MORE
133====================================================== 184======================================================
134Test avatar walking up stairs. How does compare with SL. 185Compute avatar size and scale correctly. Now it is a bit off from the capsule size.
135 Radius of the capsule affects ability to climb edges. 186Create tests for different interface components
187 Have test objects/scripts measure themselves and turn color if correct/bad
188 Test functions in SL and calibrate correctness there
189 Create auto rezzer and tracker to run through the tests
190Do we need to do convex hulls all the time? Can complex meshes be left meshes?
191 There is some problem with meshes and collisions
192 Hulls are not as detailed as meshes. Hulled vehicles insides are different shape.
136Debounce avatar contact so legs don't keep folding up when standing. 193Debounce avatar contact so legs don't keep folding up when standing.
137Implement LSL physics controls. Like STATUS_ROTATE_X. 194Implement LSL physics controls. Like STATUS_ROTATE_X.
138Add border extensions to terrain to help region crossings and objects leaving region. 195Add border extensions to terrain to help region crossings and objects leaving region.
139Use a different capsule shape for avatar when sitting 196Use a different capsule shape for avatar when sitting
140 LL uses a pyrimidal shape scaled by the avatar's bounding box 197 LL uses a pyrimidal shape scaled by the avatar's bounding box
141 http://wiki.secondlife.com/wiki/File:Avmeshforms.png 198 http://wiki.secondlife.com/wiki/File:Avmeshforms.png
142
143Performance test with lots of avatars. Can BulletSim support a thousand? 199Performance test with lots of avatars. Can BulletSim support a thousand?
144Optimize collisions in C++: only send up to the object subscribed to collisions. 200Optimize collisions in C++: only send up to the object subscribed to collisions.
145 Use collision subscription and remove the collsion(A,B) and collision(B,A) 201 Use collision subscription and remove the collsion(A,B) and collision(B,A)
146Check whether SimMotionState needs large if statement (see TODO). 202Check whether SimMotionState needs large if statement (see TODO).
147
148Implement 'top colliders' info. 203Implement 'top colliders' info.
149Avatar jump 204Avatar jump
150Performance measurement and changes to make quicker. 205Performance measurement and changes to make quicker.
151Implement detailed physics stats (GetStats()). 206Implement detailed physics stats (GetStats()).
152
153Measure performance improvement from hulls 207Measure performance improvement from hulls
154Test not using ghost objects for volume detect implementation. 208Test not using ghost objects for volume detect implementation.
155Performance of closures and delegates for taint processing 209Performance of closures and delegates for taint processing
@@ -157,9 +211,7 @@ Performance of closures and delegates for taint processing
157 Is any slowdown introduced by the existing implementation significant? 211 Is any slowdown introduced by the existing implementation significant?
158Is there are more efficient method of implementing pre and post step actions? 212Is there are more efficient method of implementing pre and post step actions?
159 See http://www.codeproject.com/Articles/29922/Weak-Events-in-C 213 See http://www.codeproject.com/Articles/29922/Weak-Events-in-C
160
161Physics Arena central pyramid: why is one side permiable? 214Physics Arena central pyramid: why is one side permiable?
162
163In SL, perfect spheres don't seem to have rolling friction. Add special case. 215In SL, perfect spheres don't seem to have rolling friction. Add special case.
164Enforce physical parameter min/max: 216Enforce physical parameter min/max:
165 Gravity: [-1, 28] 217 Gravity: [-1, 28]
@@ -168,9 +220,12 @@ Enforce physical parameter min/max:
168 Restitution [0, 1] 220 Restitution [0, 1]
169 http://wiki.secondlife.com/wiki/Physics_Material_Settings_test 221 http://wiki.secondlife.com/wiki/Physics_Material_Settings_test
170Avatar attachments have no mass? http://forums-archive.secondlife.com/54/f0/31796/1.html 222Avatar attachments have no mass? http://forums-archive.secondlife.com/54/f0/31796/1.html
223Keep avatar scaling correct. http://pennycow.blogspot.fr/2011/07/matter-of-scale.html
171 224
172INTERNAL IMPROVEMENT/CLEANUP 225INTERNAL IMPROVEMENT/CLEANUP
173================================================= 226=================================================
227Can the 'inTaintTime' flag be cleaned up and used? For instance, a call to
228 BSScene.TaintedObject() could immediately execute the callback if already in taint time.
174Create the physical wrapper classes (BulletBody, BulletShape) by methods on 229Create the physical wrapper classes (BulletBody, BulletShape) by methods on
175 BSAPITemplate and make their actual implementation Bullet engine specific. 230 BSAPITemplate and make their actual implementation Bullet engine specific.
176 For the short term, just call the existing functions in ShapeCollection. 231 For the short term, just call the existing functions in ShapeCollection.
@@ -190,22 +245,19 @@ Generalize Dynamics and PID with standardized motors.
190Generalize Linkset and vehicles into PropertyManagers 245Generalize Linkset and vehicles into PropertyManagers
191 Methods for Refresh, RemoveBodyDependencies, RestoreBodyDependencies 246 Methods for Refresh, RemoveBodyDependencies, RestoreBodyDependencies
192 Potentially add events for shape destruction, etc. 247 Potentially add events for shape destruction, etc.
193Complete implemention of preStepActions 248Better mechanism for resetting linkset set and vehicle parameters when body rebuilt.
194 Replace vehicle step call with prestep event. 249 BSPrim.CreateGeomAndObject is kludgy with the callbacks, etc.
195 Is there a need for postStepActions? postStepTaints?
196Implement linkset by setting position of children when root updated. (LinksetManual) 250Implement linkset by setting position of children when root updated. (LinksetManual)
197 Linkset implementation using manual prim movement. 251 Linkset implementation using manual prim movement.
198LinkablePrim class? Would that simplify/centralize the linkset logic? 252LinkablePrim class? Would that simplify/centralize the linkset logic?
199BSScene.UpdateParameterSet() is broken. How to set params on objects? 253BSScene.UpdateParameterSet() is broken. How to set params on objects?
200Remove HeightmapInfo from terrain specification
201 Since C++ code does not need terrain height, this structure et al are not needed.
202Add floating motor for BS_FLOATS_ON_WATER so prim and avatar will 254Add floating motor for BS_FLOATS_ON_WATER so prim and avatar will
203 bob at the water level. BSPrim.PositionSanityCheck(). 255 bob at the water level. BSPrim.PositionSanityCheck()
204Should taints check for existance or activeness of target? 256Should taints check for existance or activeness of target?
205 When destroying linksets/etc, taints can be generated for objects that are 257 When destroying linksets/etc, taints can be generated for objects that are
206 actually gone when the taint happens. Crashes don't happen because the taint closure 258 actually gone when the taint happens. Crashes don't happen because the taint closure
207 keeps the object from being freed, but that is just an accident. 259 keeps the object from being freed, but that is just an accident.
208 Possibly have and 'active' flag that is checked by the taint processor? 260 Possibly have an 'active' flag that is checked by the taint processor?
209Parameters for physics logging should be moved from BSScene to BSParam (at least boolean ones) 261Parameters for physics logging should be moved from BSScene to BSParam (at least boolean ones)
210Can some of the physical wrapper classes (BulletBody, BulletWorld, BulletShape) be 'sealed'? 262Can some of the physical wrapper classes (BulletBody, BulletWorld, BulletShape) be 'sealed'?
211There are TOO MANY interfaces from BulletSim core to Bullet itself 263There are TOO MANY interfaces from BulletSim core to Bullet itself
@@ -270,3 +322,43 @@ llSetBuoyancy() (DONE)
270 (Resolution: Bullet resets object gravity when added to world. Moved set gravity) 322 (Resolution: Bullet resets object gravity when added to world. Moved set gravity)
271Avatar density is WAY off. Compare and calibrate with what's in SL. (DONE) 323Avatar density is WAY off. Compare and calibrate with what's in SL. (DONE)
272 (Resolution: set default density to 3.5 (from 60) which is closer to SL) 324 (Resolution: set default density to 3.5 (from 60) which is closer to SL)
325Redo BulletSimAPI to allow native C# implementation of Bullet option (DONE)
326 (Resolution: added BSAPITemplate and then interfaces for C++ Bullet and C# BulletXNA
327Meshes rendering as bounding boxes (DONE)
328 (Resolution: Added test for mesh/sculpties in native shapes so it didn't think it was a box)
329llMoveToTarget (Resolution: added simple motor to update the position.)
330Angular motor direction is global coordinates rather than local coordinates (DONE)
331Add vehicle collisions so IsColliding is properly reported. (DONE)
332 Needed for banking, limitMotorUp, movementLimiting, ...
333 (Resolution: added CollisionFlags.BS_VEHICLE_COLLISION and code to use it)
334VehicleAddForce is not scaled by the simulation step but it is only
335 applied for one step. Should it be scaled? (DONE)
336 (Resolution: use force for timed things, Impulse for immediate, non-timed things)
337Complete implemention of preStepActions (DONE)
338 Replace vehicle step call with prestep event.
339 Is there a need for postStepActions? postStepTaints?
340Disable activity of passive linkset children. (DONE)
341 Since the linkset is a compound object, the old prims are left lying
342 around and need to be phantomized so they don't collide, ...
343Remove HeightmapInfo from terrain specification (DONE)
344 Since C++ code does not need terrain height, this structure et al are not needed.
345Surfboard go wonky when turning (DONE)
346 Angular motor direction is global coordinates rather than local coordinates?
347 (Resolution: made angular motor direction correct coordinate system)
348Mantis 6040 script http://opensimulator.org/mantis/view.php?id=6040 (DONE)
349 Msg Kayaker on OSGrid when working
350 (Resolution: LINEAR_DIRECTION is in vehicle coords. Test script does the
351 same in SL as in OS/BulletSim)
352Boats float low in the water (DONE)
353Boats floating at proper level (DONE)
354When is force introduced by SetForce removed? The prestep action could go forever. (DONE)
355 (Resolution: setForce registers a prestep action which keeps applying the force)
356Child movement in linkset (don't rebuild linkset) (DONE 20130122))
357Avatar standing on a moving object should start to move with the object. (DONE 20130125)
358Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE.
359 Verify that angular motion specified around Z moves in the vehicle coordinates.
360 DONE 20130120: BulletSim properly applies force in vehicle relative coordinates.
361Nebadon vehicles turning funny in arena (DONE)
362Lock axis (DONE 20130401)
363Terrain detail: double terrain mesh detail (DONE)
364