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