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.txt218
1 files changed, 218 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..c084ab4
--- /dev/null
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -0,0 +1,218 @@
1CURRENT PRIORITIES
2=================================================
3Smooth avatar movement with motor
4 Should motor update be all at taint-time?
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)
9Vehicle movement on terrain smoothness
10Vehicle script tuning/debugging
11 Avanti speed script
12 Weapon shooter script
13limitMotorUp calibration (more down?)
14
15CRASHES
16=================================================
1720121129.1411: editting/moving phys object across region boundries causes crash
18 getPos-> btRigidBody::upcast -> getBodyType -> BOOM
1920121128.1600: mesh object not rezzing (no physics mesh).
20 Causes many errors. Doesn't stop after first error with box shape.
21 Eventually crashes when deleting the object.
2220121206.1434: rez Sam-pan into OSGrid BulletSim11 region
23 Immediate simulator crash. Mono does not output any stacktrace and
24 log just stops after reporting taint-time linking of the linkset.
25
26VEHICLES TODO LIST:
27=================================================
28Border crossing with linked vehicle causes crash
29Vehicles (Move smoothly)
30Add vehicle collisions so IsColliding is properly reported.
31 Needed for banking, limitMotorUp, movementLimiting, ...
32Some vehicles should not be able to turn if no speed or off ground.
33Cannot edit/move a vehicle being ridden: it jumps back to the origional position.
34Neb car jiggling left and right
35 Happens on terrain and any other mesh object. Flat cubes are much smoother.
36 This has been reduced but not eliminated.
37Implement referenceFrame for all the motion routines.
38Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE.
39 Verify that angular motion specified around Z moves in the vehicle coordinates.
40Verify llGetVel() is returning a smooth and good value for vehicle movement.
41llGetVel() should return the root's velocity if requested in a child prim.
42Implement function efficiency for lineaar and angular motion.
43After getting off a vehicle, the root prim is phantom (can be walked through)
44 Need to force a position update for the root prim after compound shape destruction
45Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint)
46For limitMotorUp, use raycast down to find if vehicle is in the air.
47Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties().
48 A kludge that isn't fixing the real problem of Bullet adding extra motion.
49Incorporate inter-relationship of angular corrections. For instance, angularDeflection
50 and angularMotorUp will compute same X or Y correction. When added together
51 creates over-correction and over-shoot and wabbling.
52
53BULLETSIM TODO LIST:
54=================================================
55Revisit CollisionMargin. Builders notice the 0.04 spacing between prims.
56Duplicating a physical prim causes old prim to jump away
57 Dup a phys prim and the original become unselected and thus interacts w/ selected prim.
58Scenes with hundred of thousands of static objects take a lot of physics CPU time.
59BSPrim.Force should set a continious force on the prim. The force should be
60 applied each tick. Some limits?
61Gun sending shooter flying.
62Collision margin (gap between physical objects lying on each other)
63Boundry checking (crashes related to crossing boundry)
64 Add check for border edge position for avatars and objects.
65 Verify the events are created for border crossings.
66Avatar rotation (check out changes to ScenePresence for physical rotation)
67Avatar running (what does phys engine need to do?)
68Small physical objects do not interact correctly
69 Create chain of .5x.5x.1 torui and make all but top physical so to hang.
70 The chain will fall apart and pairs will dance around on ground
71 Chains of 1x1x.2 will stay connected but will dance.
72 Chains above 2x2x.4 are move stable and get stablier as torui get larger.
73Add PID motor for avatar movement (slow to stop, ...)
74setForce should set a constant force. Different than AddImpulse.
75Implement raycast.
76Implement ShapeCollection.Dispose()
77Implement water as a plain so raycasting and collisions can happen with same.
78Add osGetPhysicsEngineName() so scripters can tell whether BulletSim or ODE
79 Also osGetPhysicsEngineVerion() maybe.
80Linkset.Position and Linkset.Orientation requre rewrite to properly return
81 child position. LinksetConstraint acts like it's at taint time!!
82Implement LockAngularMotion -- implements llSetStatus(ROTATE_AXIS_*, T/F)
83Should the different PID factors have non-equal contributions for different
84 values of Efficiency?
85
86LINKSETS
87======================================================
88Linksets should allow collisions to individual children
89 Add LocalID to children shapes in LinksetCompound and create events for individuals
90LinksetCompound: when one of the children changes orientation (like tires
91 turning on a vehicle, the whole compound object is rebuilt. Optimize this
92 so orientation/position of individual children can change without a rebuild.
93Verify/think through scripts in children of linksets. What do they reference
94 and return when getting position, velocity, ...
95Confirm constraint linksets still work after making all the changes for compound linksets.
96Add 'changed' flag or similar to reduce the number of times a linkset is rebuilt.
97 For compound linksets, add ability to remove or reposition individual child shapes.
98Disable activity of passive linkset children.
99 Since the linkset is a compound object, the old prims are left lying
100 around and need to be phantomized so they don't collide, ...
101Speed up creation of large physical linksets
102 For instance, sitting in Neb's car (130 prims) takes several seconds to become physical.
103 REALLY bad for very large physical linksets (freezes the sim for many seconds).
104Eliminate collisions between objects in a linkset. (LinksetConstraint)
105 Have UserPointer point to struct with localID and linksetID?
106 Objects in original linkset still collide with each other?
107
108MORE
109======================================================
110Test avatar walking up stairs. How does compare with SL.
111 Radius of the capsule affects ability to climb edges.
112Debounce avatar contact so legs don't keep folding up when standing.
113Implement LSL physics controls. Like STATUS_ROTATE_X.
114Add border extensions to terrain to help region crossings and objects leaving region.
115
116Performance test with lots of avatars. Can BulletSim support a thousand?
117Optimize collisions in C++: only send up to the object subscribed to collisions.
118 Use collision subscription and remove the collsion(A,B) and collision(B,A)
119Check whether SimMotionState needs large if statement (see TODO).
120
121Implement 'top colliders' info.
122Avatar jump
123Performance measurement and changes to make quicker.
124Implement detailed physics stats (GetStats()).
125
126Measure performance improvement from hulls
127Test not using ghost objects for volume detect implementation.
128Performance of closures and delegates for taint processing
129 Are there faster ways?
130 Is any slowdown introduced by the existing implementation significant?
131Is there are more efficient method of implementing pre and post step actions?
132 See http://www.codeproject.com/Articles/29922/Weak-Events-in-C
133
134Physics Arena central pyramid: why is one side permiable?
135
136INTERNAL IMPROVEMENT/CLEANUP
137=================================================
138Consider moving prim/character body and shape destruction in destroy()
139 to postTimeTime rather than protecting all the potential sets that
140 might have been queued up.
141Remove unused fields from ShapeData (not used in API2)
142Remove unused fields from pinned memory shared parameter block
143 Create parameter variables in BSScene to replace same.
144Breakout code for mesh/hull/compound/native into separate BSShape* classes
145 Standardize access to building and reference code.
146 The skeleton classes are in the sources but are not complete or linked in.
147Make BSBody and BSShape real classes to centralize creation/changin/destruction
148 Convert state and parameter calls from BulletSimAPI direct calls to
149 calls on BSBody and BSShape
150Generalize Dynamics and PID with standardized motors.
151Generalize Linkset and vehicles into PropertyManagers
152 Methods for Refresh, RemoveBodyDependencies, RestoreBodyDependencies
153 Potentially add events for shape destruction, etc.
154Complete implemention of preStepActions
155 Replace vehicle step call with prestep event.
156 Is there a need for postStepActions? postStepTaints?
157Implement linkset by setting position of children when root updated. (LinksetManual)
158 Linkset implementation using manual prim movement.
159LinkablePrim class? Would that simplify/centralize the linkset logic?
160BSScene.UpdateParameterSet() is broken. How to set params on objects?
161Remove HeightmapInfo from terrain specification
162 Since C++ code does not need terrain height, this structure et al are not needed.
163Add floating motor for BS_FLOATS_ON_WATER so prim and avatar will
164 bob at the water level. BSPrim.PositionSanityCheck().
165Should taints check for existance or activeness of target?
166 When destroying linksets/etc, taints can be generated for objects that are
167 actually gone when the taint happens. Crashes don't happen because the taint closure
168 keeps the object from being freed, but that is just an accident.
169 Possibly have and 'active' flag that is checked by the taint processor?
170
171THREADING
172=================================================
173Do taint action immediately if not actually executing Bullet.
174 Add lock around Bullet execution and just do taint actions if simulation is not happening.
175
176DONE DONE DONE DONE
177=================================================
178Cleanup code in BSDynamics by using motors. (Resolution: started)
179Consider implementing terrain with a mesh rather than heightmap. (Resolution: done)
180 Would have better and adjustable resolution.
181Build terrain mesh so heighmap is height of the center of the square meter.
182 Resolution: NOT DONE: SL and ODE define meter square as being at one corner with one diagional.
183Terrain as mesh. (Resolution: done)
184How are static linksets seen by the physics engine?
185 Resolution: they are not linked in physics. When moved, all the children are repositioned.
186Convert BSCharacter to use all API2 (Resolution: done)
187Avatar pushing difficult (too heavy?)
188Use asset service passed to BulletSim to get sculptie bodies, etc. (Resolution: done)
189Remove old code in DLL (all non-API2 stuff). (Resolution: done)
190Measurements of mega-physical prim performance (with graph) (Resolution: done, email)
191Debug Bullet internal stats output (why is timing all wrong?)
192 Resolution: Bullet stats logging only works with a single instance of Bullet (one region).
193Implement meshes or just verify that they work. (Resolution: they do!)
194Do prim hash codes work for sculpties and meshes? (Resolution: yes)
195Linkset implementation using compound shapes. (Resolution: implemented LinksetCompound)
196 Compound shapes will need the LocalID in the shapes and collision
197 processing to get it from there.
198Light cycle not banking (Resolution: It doesn't. Banking is roll adding yaw.)
199Package Bullet source mods for Bullet internal stats output
200 (Resolution: move code into WorldData.h rather than relying on patches)
201Single prim vehicles don't seem to properly vehiclize.
202 (Resolution: mass was not getting set properly for single prim linksets)
203Add material type linkage and input all the material property definitions.
204 Skeleton classes and table are in the sources but are not filled or used.
205 (Resolution:
206Neb vehicle taking > 25ms of physics time!!
207 (Resolution: compound linksets were being rebuild WAY too often)
208Avatar height off after unsitting (floats off ground)
209 Editting appearance then moving restores.
210 Must not be initializing height when recreating capsule after unsit.
211 (Resolution: confusion of scale vs size for native objects removed)
212Light cycle falling over when driving (Resolution: implemented angularMotorUp)
213Should vehicle angular/linear movement friction happen after all the components
214 or does it only apply to the basic movement?
215 (Resolution: friction added before returning newly computed motor value.
216 What is expected by some vehicles (turning up friction to moderate speed))
217Tune terrain/object friction to be closer to SL.
218 (Resolution: added material type with friction and resolution)