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