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