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.txt346
1 files changed, 346 insertions, 0 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
new file mode 100755
index 0000000..8a15abe
--- /dev/null
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -0,0 +1,346 @@
1CURRENT PRIORITIES
2=================================================
3Use the HACD convex hull routine in Bullet rather than the C# version.
4 Speed up hullifying large meshes.
5Enable vehicle border crossings (at least as poorly as ODE)
6 Terrain skirts
7 Avatar created in previous region and not new region when crossing border
8 Vehicle recreated in new sim at small Z value (offset from root value?) (DONE)
9Lock axis
10Deleting a linkset while standing on the root will leave the physical shape of the root behind.
11 Not sure if it is because standing on it. Done with large prim linksets.
12Linkset child rotations.
13 Nebadon spiral tube has middle sections which are rotated wrong.
14 Select linked spiral tube. Delink and note where the middle section ends up.
15Vehicle angular vertical attraction
16vehicle angular banking
17Center-of-gravity
18Vehicle angular deflection
19 Preferred orientation angular correction fix
20when should angular and linear motor targets be zeroed? when selected?
21 Need a vehicle.clear()? Or an 'else' in prestep if not physical.
22Teravus llMoveToTarget script debug
23 Mixing of hover, buoyancy/gravity, moveToTarget, into one force
24 Setting hover height to zero disables hover even if hover flags are on (from SL wiki)
25limitMotorUp calibration (more down?)
26llRotLookAt
27llLookAt
28Avatars walking up stairs (HALF DONE)
29Avatar movement
30 flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE)
31 walking up stairs is not calibrated correctly (stairs out of Kepler cabin)
32 avatar capsule rotation completed (NOT DONE - Bullet's capsule shape is not the solution)
33Vehicle script tuning/debugging
34 Avanti speed script
35 Weapon shooter script
36Move material definitions (friction, ...) into simulator.
37Add material densities to the material types.
38Terrain detail: double terrain mesh detail
39One sided meshes? Should terrain be built into a closed shape?
40 When meshes get partially wedged into the terrain, they cannot push themselves out.
41 It is possible that Bullet processes collisions whether entering or leaving a mesh.
42 Ref: http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=4869
43
44VEHICLES TODO LIST:
45=================================================
46Border crossing with linked vehicle causes crash
47 20121129.1411: editting/moving phys object across region boundries causes crash
48 getPos-> btRigidBody::upcast -> getBodyType -> BOOM
49Vehicles (Move smoothly)
50Some vehicles should not be able to turn if no speed or off ground.
51What to do if vehicle and prim buoyancy differ?
52Cannot edit/move a vehicle being ridden: it jumps back to the origional position.
53Neb car jiggling left and right
54 Happens on terrain and any other mesh object. Flat cubes are much smoother.
55 This has been reduced but not eliminated.
56Implement referenceFrame for all the motion routines.
57For limitMotorUp, use raycast down to find if vehicle is in the air.
58Verify llGetVel() is returning a smooth and good value for vehicle movement.
59llGetVel() should return the root's velocity if requested in a child prim.
60Implement function efficiency for lineaar and angular motion.
61After getting off a vehicle, the root prim is phantom (can be walked through)
62 Need to force a position update for the root prim after compound shape destruction
63Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint)
64Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties().
65 A kludge that isn't fixing the real problem of Bullet adding extra motion.
66Incorporate inter-relationship of angular corrections. For instance, angularDeflection
67 and angularMotorUp will compute same X or Y correction. When added together
68 creates over-correction and over-shoot and wabbling.
69Vehicle attributes are not restored when a vehicle is rezzed on region creation
70 Create vehicle, setup vehicle properties, restart region, vehicle is not reinitialized.
71
72GENERAL TODO LIST:
73=================================================
74Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects.
75 Regular triangle meshes don't do physical collisions.
76Resitution of a prim works on another prim but not on terrain.
77 The dropped prim doesn't bounce properly on the terrain.
78Add a sanity check for PIDTarget location.
79Level-of-detail for mesh creation. Prims with circular interiors require lod of 32.
80 Is much saved with lower LODs? At the moment, all set to 32.
81Collisions are inconsistant: arrows are supposed to hit and report collision. Often don't.
82 If arrow show at prim, collision reported about 1/3 of time. If collision reported,
83 both arrow and prim report it. The arrow bounces off the prim 9 out of 10 times.
84 Shooting 5m sphere "arrows" at 60m/s.
85llMoveToTarget objects are not effected by gravity until target is removed.
86Compute CCD parameters based on body size
87Can solver iterations be changed per body/shape? Can be for constraints but what
88 about regular vehicles?
89Implement llSetPhysicalMaterial.
90 extend it with Center-of-mass, rolling friction, density
91Implement llSetForceAndTorque.
92Change BSPrim.moveToTarget to used forces rather than changing position
93 Changing position allows one to move through walls
94Implement an avatar mesh shape. The Bullet capsule is way too limited.
95 Consider just hand creating a vertex/index array in a new BSShapeAvatar.
96Verify/fix phantom, volume-detect objects do not fall to infinity. Should stop at terrain.
97Revisit CollisionMargin. Builders notice the 0.04 spacing between prims.
98Duplicating a physical prim causes old prim to jump away
99 Dup a phys prim and the original become unselected and thus interacts w/ selected prim.
100Scenes with hundred of thousands of static objects take a lot of physics CPU time.
101BSPrim.Force should set a continious force on the prim. The force should be
102 applied each tick. Some limits?
103Gun sending shooter flying.
104Collision margin (gap between physical objects lying on each other)
105Boundry checking (crashes related to crossing boundry)
106 Add check for border edge position for avatars and objects.
107 Verify the events are created for border crossings.
108Avatar rotation (check out changes to ScenePresence for physical rotation)
109Avatar running (what does phys engine need to do?)
110Small physical objects do not interact correctly
111 Create chain of .5x.5x.1 torui and make all but top physical so to hang.
112 The chain will fall apart and pairs will dance around on ground
113 Chains of 1x1x.2 will stay connected but will dance.
114 Chains above 2x2x.4 are more stable and get stablier as torui get larger.
115Add PID motor for avatar movement (slow to stop, ...)
116setForce should set a constant force. Different than AddImpulse.
117Implement raycast.
118Implement ShapeCollection.Dispose()
119Implement water as a plain so raycasting and collisions can happen with same.
120Add collision penetration return
121 Add field passed back by BulletSim.dll and fill with info in ManifoldConstact.GetDistance()
122Add osGetPhysicsEngineName() so scripters can tell whether BulletSim or ODE
123 Also osGetPhysicsEngineVerion() maybe.
124Linkset.Position and Linkset.Orientation requre rewrite to properly return
125 child position. LinksetConstraint acts like it's at taint time!!
126Implement LockAngularMotion -- implements llSetStatus(ROTATE_AXIS_*, T/F)
127Should the different PID factors have non-equal contributions for different
128 values of Efficiency?
129Selecting and deselecting physical objects causes CPU processing time to jump
130 http://www.youtube.com/watch?v=Hjg57fWg8yI&hd=1
131 put thousand physical objects, select and deselect same. CPU time will be large.
132Re-implement buoyancy as a separate force on the object rather than diddling gravity.
133 Register a pre-step event to add the force.
134More efficient memory usage when passing hull information from BSPrim to BulletSim
135Avatar movement motor check for zero or small movement. Somehow suppress small movements
136 when avatar has stopped and is just standing. Simple test for near zero has
137 the problem of preventing starting up (increase from zero) especially when falling.
138Physical and phantom will drop through the terrain
139
140
141LINKSETS
142======================================================
143Child prims do not report collisions
144Allow children of a linkset to be phantom:
145 http://opensim-dev.2196679.n2.nabble.com/Setting-a-single-child-prim-to-Phantom-tp7578513.html
146 Add OS_STATUS_PHANTOM_PRIM to llSetLinkPrimitaveParamsFast.
147Editing a child of a linkset causes the child to go phantom
148 Move a child prim once when it is physical and can never move it again without it going phantom
149Offset the center of the linkset to be the geometric center of all the prims
150 Not quite the same as the center-of-gravity
151Linksets should allow collisions to individual children
152 Add LocalID to children shapes in LinksetCompound and create events for individuals
153LinksetCompound: when one of the children changes orientation (like tires
154 turning on a vehicle, the whole compound object is rebuilt. Optimize this
155 so orientation/position of individual children can change without a rebuild.
156Verify/think through scripts in children of linksets. What do they reference
157 and return when getting position, velocity, ...
158Confirm constraint linksets still work after making all the changes for compound linksets.
159Use PostTaint callback to do rebuilds for constraint linksets to reduce rebuilding
160Add 'changed' flag or similar to reduce the number of times a linkset is rebuilt.
161 For compound linksets, add ability to remove or reposition individual child shapes.
162Speed up creation of large physical linksets
163 For instance, sitting in Neb's car (130 prims) takes several seconds to become physical.
164 REALLY bad for very large physical linksets (freezes the sim for many seconds).
165Eliminate collisions between objects in a linkset. (LinksetConstraint)
166 Have UserPointer point to struct with localID and linksetID?
167 Objects in original linkset still collide with each other?
168
169MORE
170======================================================
171Create tests for different interface components
172 Have test objects/scripts measure themselves and turn color if correct/bad
173 Test functions in SL and calibrate correctness there
174 Create auto rezzer and tracker to run through the tests
175Do we need to do convex hulls all the time? Can complex meshes be left meshes?
176 There is some problem with meshes and collisions
177 Hulls are not as detailed as meshes. Hulled vehicles insides are different shape.
178Debounce avatar contact so legs don't keep folding up when standing.
179Implement LSL physics controls. Like STATUS_ROTATE_X.
180Add border extensions to terrain to help region crossings and objects leaving region.
181Use a different capsule shape for avatar when sitting
182 LL uses a pyrimidal shape scaled by the avatar's bounding box
183 http://wiki.secondlife.com/wiki/File:Avmeshforms.png
184Performance test with lots of avatars. Can BulletSim support a thousand?
185Optimize collisions in C++: only send up to the object subscribed to collisions.
186 Use collision subscription and remove the collsion(A,B) and collision(B,A)
187Check whether SimMotionState needs large if statement (see TODO).
188Implement 'top colliders' info.
189Avatar jump
190Performance measurement and changes to make quicker.
191Implement detailed physics stats (GetStats()).
192Measure performance improvement from hulls
193Test not using ghost objects for volume detect implementation.
194Performance of closures and delegates for taint processing
195 Are there faster ways?
196 Is any slowdown introduced by the existing implementation significant?
197Is there are more efficient method of implementing pre and post step actions?
198 See http://www.codeproject.com/Articles/29922/Weak-Events-in-C
199Physics Arena central pyramid: why is one side permiable?
200In SL, perfect spheres don't seem to have rolling friction. Add special case.
201Enforce physical parameter min/max:
202 Gravity: [-1, 28]
203 Friction: [0, 255]
204 Density: [1, 22587]
205 Restitution [0, 1]
206 http://wiki.secondlife.com/wiki/Physics_Material_Settings_test
207Avatar attachments have no mass? http://forums-archive.secondlife.com/54/f0/31796/1.html
208Keep avatar scaling correct. http://pennycow.blogspot.fr/2011/07/matter-of-scale.html
209
210INTERNAL IMPROVEMENT/CLEANUP
211=================================================
212Can the 'inTaintTime' flag be cleaned up and used? For instance, a call to
213 BSScene.TaintedObject() could immediately execute the callback if already in taint time.
214Create the physical wrapper classes (BulletBody, BulletShape) by methods on
215 BSAPITemplate and make their actual implementation Bullet engine specific.
216 For the short term, just call the existing functions in ShapeCollection.
217Consider moving prim/character body and shape destruction in destroy()
218 to postTimeTime rather than protecting all the potential sets that
219 might have been queued up.
220Remove unused fields from ShapeData (not used in API2)
221Remove unused fields from pinned memory shared parameter block
222 Create parameter variables in BSScene to replace same.
223Breakout code for mesh/hull/compound/native into separate BSShape* classes
224 Standardize access to building and reference code.
225 The skeleton classes are in the sources but are not complete or linked in.
226Make BSBody and BSShape real classes to centralize creation/changin/destruction
227 Convert state and parameter calls from BulletSimAPI direct calls to
228 calls on BSBody and BSShape
229Generalize Dynamics and PID with standardized motors.
230Generalize Linkset and vehicles into PropertyManagers
231 Methods for Refresh, RemoveBodyDependencies, RestoreBodyDependencies
232 Potentially add events for shape destruction, etc.
233Better mechanism for resetting linkset set and vehicle parameters when body rebuilt.
234 BSPrim.CreateGeomAndObject is kludgy with the callbacks, etc.
235Implement linkset by setting position of children when root updated. (LinksetManual)
236 Linkset implementation using manual prim movement.
237LinkablePrim class? Would that simplify/centralize the linkset logic?
238BSScene.UpdateParameterSet() is broken. How to set params on objects?
239Add floating motor for BS_FLOATS_ON_WATER so prim and avatar will
240 bob at the water level. BSPrim.PositionSanityCheck()
241Should taints check for existance or activeness of target?
242 When destroying linksets/etc, taints can be generated for objects that are
243 actually gone when the taint happens. Crashes don't happen because the taint closure
244 keeps the object from being freed, but that is just an accident.
245 Possibly have an 'active' flag that is checked by the taint processor?
246Parameters for physics logging should be moved from BSScene to BSParam (at least boolean ones)
247Can some of the physical wrapper classes (BulletBody, BulletWorld, BulletShape) be 'sealed'?
248There are TOO MANY interfaces from BulletSim core to Bullet itself
249 Think of something to eliminate one or more of the layers
250
251THREADING
252=================================================
253Do taint action immediately if not actually executing Bullet.
254 Add lock around Bullet execution and just do taint actions if simulation is not happening.
255
256DONE DONE DONE DONE
257=================================================
258Cleanup code in BSDynamics by using motors. (Resolution: started)
259Consider implementing terrain with a mesh rather than heightmap. (Resolution: done)
260 Would have better and adjustable resolution.
261Build terrain mesh so heighmap is height of the center of the square meter.
262 Resolution: NOT DONE: SL and ODE define meter square as being at one corner with one diagional.
263Terrain as mesh. (Resolution: done)
264How are static linksets seen by the physics engine?
265 Resolution: they are not linked in physics. When moved, all the children are repositioned.
266Convert BSCharacter to use all API2 (Resolution: done)
267Avatar pushing difficult (too heavy?)
268Use asset service passed to BulletSim to get sculptie bodies, etc. (Resolution: done)
269Remove old code in DLL (all non-API2 stuff). (Resolution: done)
270Measurements of mega-physical prim performance (with graph) (Resolution: done, email)
271Debug Bullet internal stats output (why is timing all wrong?)
272 Resolution: Bullet stats logging only works with a single instance of Bullet (one region).
273Implement meshes or just verify that they work. (Resolution: they do!)
274Do prim hash codes work for sculpties and meshes? (Resolution: yes)
275Linkset implementation using compound shapes. (Resolution: implemented LinksetCompound)
276 Compound shapes will need the LocalID in the shapes and collision
277 processing to get it from there.
278Light cycle not banking (Resolution: It doesn't. Banking is roll adding yaw.)
279Package Bullet source mods for Bullet internal stats output
280 (Resolution: move code into WorldData.h rather than relying on patches)
281Single prim vehicles don't seem to properly vehiclize.
282 (Resolution: mass was not getting set properly for single prim linksets)
283Add material type linkage and input all the material property definitions.
284 Skeleton classes and table are in the sources but are not filled or used.
285 (Resolution:
286Neb vehicle taking > 25ms of physics time!!
287 (Resolution: compound linksets were being rebuild WAY too often)
288Avatar height off after unsitting (floats off ground)
289 Editting appearance then moving restores.
290 Must not be initializing height when recreating capsule after unsit.
291 (Resolution: confusion of scale vs size for native objects removed)
292Light cycle falling over when driving (Resolution: implemented angularMotorUp)
293Should vehicle angular/linear movement friction happen after all the components
294 or does it only apply to the basic movement?
295 (Resolution: friction added before returning newly computed motor value.
296 What is expected by some vehicles (turning up friction to moderate speed))
297Tune terrain/object friction to be closer to SL.
298 (Resolution: added material type with friction and resolution)
299Smooth avatar movement with motor (DONE)
300 Should motor update be all at taint-time? (Yes, DONE)
301 Fix avatar slowly sliding when standing (zero motion when stopped) (DONE)
302 (Resolution: added BSVMotor for avatar starting and stopping)
303llApplyImpulse()
304 Compare mass/movement in OS and SL. Calibrate actions. (DONE)
305 (Resolution: tested on SL and OS. AddForce scales the force for timestep)
306llSetBuoyancy() (DONE)
307 (Resolution: Bullet resets object gravity when added to world. Moved set gravity)
308Avatar density is WAY off. Compare and calibrate with what's in SL. (DONE)
309 (Resolution: set default density to 3.5 (from 60) which is closer to SL)
310Redo BulletSimAPI to allow native C# implementation of Bullet option (DONE)
311 (Resolution: added BSAPITemplate and then interfaces for C++ Bullet and C# BulletXNA
312Meshes rendering as bounding boxes (DONE)
313 (Resolution: Added test for mesh/sculpties in native shapes so it didn't think it was a box)
314llMoveToTarget (Resolution: added simple motor to update the position.)
315Angular motor direction is global coordinates rather than local coordinates (DONE)
316Add vehicle collisions so IsColliding is properly reported. (DONE)
317 Needed for banking, limitMotorUp, movementLimiting, ...
318 (Resolution: added CollisionFlags.BS_VEHICLE_COLLISION and code to use it)
319VehicleAddForce is not scaled by the simulation step but it is only
320 applied for one step. Should it be scaled? (DONE)
321 (Resolution: use force for timed things, Impulse for immediate, non-timed things)
322Complete implemention of preStepActions (DONE)
323 Replace vehicle step call with prestep event.
324 Is there a need for postStepActions? postStepTaints?
325Disable activity of passive linkset children. (DONE)
326 Since the linkset is a compound object, the old prims are left lying
327 around and need to be phantomized so they don't collide, ...
328Remove HeightmapInfo from terrain specification (DONE)
329 Since C++ code does not need terrain height, this structure et al are not needed.
330Surfboard go wonky when turning (DONE)
331 Angular motor direction is global coordinates rather than local coordinates?
332 (Resolution: made angular motor direction correct coordinate system)
333Mantis 6040 script http://opensimulator.org/mantis/view.php?id=6040 (DONE)
334 Msg Kayaker on OSGrid when working
335 (Resolution: LINEAR_DIRECTION is in vehicle coords. Test script does the
336 same in SL as in OS/BulletSim)
337Boats float low in the water (DONE)
338Boats floating at proper level (DONE)
339When is force introduced by SetForce removed? The prestep action could go forever. (DONE)
340 (Resolution: setForce registers a prestep action which keeps applying the force)
341Child movement in linkset (don't rebuild linkset) (DONE 20130122))
342Avatar standing on a moving object should start to move with the object. (DONE 20130125)
343Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE.
344 Verify that angular motion specified around Z moves in the vehicle coordinates.
345 DONE 20130120: BulletSim properly applies force in vehicle relative coordinates.
346Nebadon vehicles turning funny in arena (DONE)