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