diff options
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt')
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt index 29bd4e4..59cbab9 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt | |||
@@ -1,12 +1,17 @@ | |||
1 | CURRENT PRIORITIES | 1 | CURRENT PRIORITIES |
2 | ================================================= | 2 | ================================================= |
3 | Nebadon vehicles turning funny in arena | ||
4 | limitMotorUp calibration (more down?) | ||
5 | Vehicle angular vertical attraction | ||
6 | Vehicle angular deflection | ||
7 | Preferred orientation angular correction fix | ||
8 | vehicle angular banking | ||
3 | Avatars walking up stairs (HALF DONE) | 9 | Avatars walking up stairs (HALF DONE) |
10 | Radius of the capsule affects ability to climb edges. | ||
4 | Vehicle movement on terrain smoothness | 11 | Vehicle movement on terrain smoothness |
5 | limitMotorUp calibration (more down?) | ||
6 | Preferred orientation angular correction fix | ||
7 | Surfboard go wonky when turning | 12 | Surfboard go wonky when turning |
8 | Angular motor direction is global coordinates rather than local coordinates? | 13 | Angular motor direction is global coordinates rather than local coordinates? |
9 | Boats float low in the water | 14 | Boats float low in the water (DONE) |
10 | Avatar movement | 15 | Avatar movement |
11 | flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE) | 16 | flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE) |
12 | walking up stairs is not calibrated correctly (stairs out of Kepler cabin) | 17 | walking up stairs is not calibrated correctly (stairs out of Kepler cabin) |
@@ -33,19 +38,15 @@ CRASHES | |||
33 | 38 | ||
34 | VEHICLES TODO LIST: | 39 | VEHICLES TODO LIST: |
35 | ================================================= | 40 | ================================================= |
36 | Angular motor direction is global coordinates rather than local coordinates | ||
37 | Border crossing with linked vehicle causes crash | 41 | Border crossing with linked vehicle causes crash |
38 | Vehicles (Move smoothly) | 42 | Vehicles (Move smoothly) |
39 | Add vehicle collisions so IsColliding is properly reported. | ||
40 | Needed for banking, limitMotorUp, movementLimiting, ... | ||
41 | VehicleAddForce is not scaled by the simulation step but it is only | ||
42 | applied for one step. Should it be scaled? | ||
43 | Some vehicles should not be able to turn if no speed or off ground. | 43 | Some vehicles should not be able to turn if no speed or off ground. |
44 | Cannot edit/move a vehicle being ridden: it jumps back to the origional position. | 44 | Cannot edit/move a vehicle being ridden: it jumps back to the origional position. |
45 | Neb car jiggling left and right | 45 | Neb car jiggling left and right |
46 | Happens on terrain and any other mesh object. Flat cubes are much smoother. | 46 | Happens on terrain and any other mesh object. Flat cubes are much smoother. |
47 | This has been reduced but not eliminated. | 47 | This has been reduced but not eliminated. |
48 | Implement referenceFrame for all the motion routines. | 48 | Implement referenceFrame for all the motion routines. |
49 | For limitMotorUp, use raycast down to find if vehicle is in the air. | ||
49 | Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE. | 50 | Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE. |
50 | Verify that angular motion specified around Z moves in the vehicle coordinates. | 51 | Verify that angular motion specified around Z moves in the vehicle coordinates. |
51 | Verify llGetVel() is returning a smooth and good value for vehicle movement. | 52 | Verify llGetVel() is returning a smooth and good value for vehicle movement. |
@@ -54,14 +55,13 @@ Implement function efficiency for lineaar and angular motion. | |||
54 | After getting off a vehicle, the root prim is phantom (can be walked through) | 55 | After getting off a vehicle, the root prim is phantom (can be walked through) |
55 | Need to force a position update for the root prim after compound shape destruction | 56 | Need to force a position update for the root prim after compound shape destruction |
56 | Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint) | 57 | Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint) |
57 | For limitMotorUp, use raycast down to find if vehicle is in the air. | ||
58 | Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties(). | 58 | Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties(). |
59 | A kludge that isn't fixing the real problem of Bullet adding extra motion. | 59 | A kludge that isn't fixing the real problem of Bullet adding extra motion. |
60 | Incorporate inter-relationship of angular corrections. For instance, angularDeflection | 60 | Incorporate inter-relationship of angular corrections. For instance, angularDeflection |
61 | and angularMotorUp will compute same X or Y correction. When added together | 61 | and angularMotorUp will compute same X or Y correction. When added together |
62 | creates over-correction and over-shoot and wabbling. | 62 | creates over-correction and over-shoot and wabbling. |
63 | 63 | ||
64 | BULLETSIM TODO LIST: | 64 | GENERAL TODO LIST: |
65 | ================================================= | 65 | ================================================= |
66 | Implement an avatar mesh shape. The Bullet capsule is way too limited. | 66 | Implement an avatar mesh shape. The Bullet capsule is way too limited. |
67 | Consider just hand creating a vertex/index array in a new BSShapeAvatar. | 67 | Consider just hand creating a vertex/index array in a new BSShapeAvatar. |
@@ -121,11 +121,9 @@ LinksetCompound: when one of the children changes orientation (like tires | |||
121 | Verify/think through scripts in children of linksets. What do they reference | 121 | Verify/think through scripts in children of linksets. What do they reference |
122 | and return when getting position, velocity, ... | 122 | and return when getting position, velocity, ... |
123 | Confirm constraint linksets still work after making all the changes for compound linksets. | 123 | Confirm constraint linksets still work after making all the changes for compound linksets. |
124 | Use PostTaint callback to do rebuilds for constraint linksets to reduce rebuilding | ||
124 | Add 'changed' flag or similar to reduce the number of times a linkset is rebuilt. | 125 | Add '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. | 126 | For compound linksets, add ability to remove or reposition individual child shapes. |
126 | Disable 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, ... | ||
129 | Speed up creation of large physical linksets | 127 | Speed up creation of large physical linksets |
130 | For instance, sitting in Neb's car (130 prims) takes several seconds to become physical. | 128 | 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). | 129 | REALLY bad for very large physical linksets (freezes the sim for many seconds). |
@@ -138,25 +136,21 @@ MORE | |||
138 | Use the HACD convex hull routine in Bullet rather than the C# version. | 136 | Use the HACD convex hull routine in Bullet rather than the C# version. |
139 | Do we need to do convex hulls all the time? Can complex meshes be left meshes? | 137 | Do we need to do convex hulls all the time? Can complex meshes be left meshes? |
140 | There is some problem with meshes and collisions | 138 | There is some problem with meshes and collisions |
141 | Test avatar walking up stairs. How does compare with SL. | 139 | Hulls are not as detailed as meshes. Hulled vehicles insides are different shape. |
142 | Radius of the capsule affects ability to climb edges. | ||
143 | Debounce avatar contact so legs don't keep folding up when standing. | 140 | Debounce avatar contact so legs don't keep folding up when standing. |
144 | Implement LSL physics controls. Like STATUS_ROTATE_X. | 141 | Implement LSL physics controls. Like STATUS_ROTATE_X. |
145 | Add border extensions to terrain to help region crossings and objects leaving region. | 142 | Add border extensions to terrain to help region crossings and objects leaving region. |
146 | Use a different capsule shape for avatar when sitting | 143 | Use a different capsule shape for avatar when sitting |
147 | LL uses a pyrimidal shape scaled by the avatar's bounding box | 144 | LL uses a pyrimidal shape scaled by the avatar's bounding box |
148 | http://wiki.secondlife.com/wiki/File:Avmeshforms.png | 145 | http://wiki.secondlife.com/wiki/File:Avmeshforms.png |
149 | |||
150 | Performance test with lots of avatars. Can BulletSim support a thousand? | 146 | Performance test with lots of avatars. Can BulletSim support a thousand? |
151 | Optimize collisions in C++: only send up to the object subscribed to collisions. | 147 | Optimize collisions in C++: only send up to the object subscribed to collisions. |
152 | Use collision subscription and remove the collsion(A,B) and collision(B,A) | 148 | Use collision subscription and remove the collsion(A,B) and collision(B,A) |
153 | Check whether SimMotionState needs large if statement (see TODO). | 149 | Check whether SimMotionState needs large if statement (see TODO). |
154 | |||
155 | Implement 'top colliders' info. | 150 | Implement 'top colliders' info. |
156 | Avatar jump | 151 | Avatar jump |
157 | Performance measurement and changes to make quicker. | 152 | Performance measurement and changes to make quicker. |
158 | Implement detailed physics stats (GetStats()). | 153 | Implement detailed physics stats (GetStats()). |
159 | |||
160 | Measure performance improvement from hulls | 154 | Measure performance improvement from hulls |
161 | Test not using ghost objects for volume detect implementation. | 155 | Test not using ghost objects for volume detect implementation. |
162 | Performance of closures and delegates for taint processing | 156 | Performance of closures and delegates for taint processing |
@@ -164,9 +158,7 @@ Performance of closures and delegates for taint processing | |||
164 | Is any slowdown introduced by the existing implementation significant? | 158 | Is any slowdown introduced by the existing implementation significant? |
165 | Is there are more efficient method of implementing pre and post step actions? | 159 | Is there are more efficient method of implementing pre and post step actions? |
166 | See http://www.codeproject.com/Articles/29922/Weak-Events-in-C | 160 | See http://www.codeproject.com/Articles/29922/Weak-Events-in-C |
167 | |||
168 | Physics Arena central pyramid: why is one side permiable? | 161 | Physics Arena central pyramid: why is one side permiable? |
169 | |||
170 | In SL, perfect spheres don't seem to have rolling friction. Add special case. | 162 | In SL, perfect spheres don't seem to have rolling friction. Add special case. |
171 | Enforce physical parameter min/max: | 163 | Enforce physical parameter min/max: |
172 | Gravity: [-1, 28] | 164 | Gravity: [-1, 28] |
@@ -178,6 +170,8 @@ Avatar attachments have no mass? http://forums-archive.secondlife.com/54/f0/3179 | |||
178 | 170 | ||
179 | INTERNAL IMPROVEMENT/CLEANUP | 171 | INTERNAL IMPROVEMENT/CLEANUP |
180 | ================================================= | 172 | ================================================= |
173 | Can 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. | ||
181 | Create the physical wrapper classes (BulletBody, BulletShape) by methods on | 175 | Create the physical wrapper classes (BulletBody, BulletShape) by methods on |
182 | BSAPITemplate and make their actual implementation Bullet engine specific. | 176 | BSAPITemplate and make their actual implementation Bullet engine specific. |
183 | For the short term, just call the existing functions in ShapeCollection. | 177 | For the short term, just call the existing functions in ShapeCollection. |
@@ -197,22 +191,19 @@ Generalize Dynamics and PID with standardized motors. | |||
197 | Generalize Linkset and vehicles into PropertyManagers | 191 | Generalize Linkset and vehicles into PropertyManagers |
198 | Methods for Refresh, RemoveBodyDependencies, RestoreBodyDependencies | 192 | Methods for Refresh, RemoveBodyDependencies, RestoreBodyDependencies |
199 | Potentially add events for shape destruction, etc. | 193 | Potentially add events for shape destruction, etc. |
200 | Complete implemention of preStepActions | 194 | Better mechanism for resetting linkset set and vehicle parameters when body rebuilt. |
201 | Replace vehicle step call with prestep event. | 195 | BSPrim.CreateGeomAndObject is kludgy with the callbacks, etc. |
202 | Is there a need for postStepActions? postStepTaints? | ||
203 | Implement linkset by setting position of children when root updated. (LinksetManual) | 196 | Implement linkset by setting position of children when root updated. (LinksetManual) |
204 | Linkset implementation using manual prim movement. | 197 | Linkset implementation using manual prim movement. |
205 | LinkablePrim class? Would that simplify/centralize the linkset logic? | 198 | LinkablePrim class? Would that simplify/centralize the linkset logic? |
206 | BSScene.UpdateParameterSet() is broken. How to set params on objects? | 199 | BSScene.UpdateParameterSet() is broken. How to set params on objects? |
207 | Remove HeightmapInfo from terrain specification | ||
208 | Since C++ code does not need terrain height, this structure et al are not needed. | ||
209 | Add floating motor for BS_FLOATS_ON_WATER so prim and avatar will | 200 | Add floating motor for BS_FLOATS_ON_WATER so prim and avatar will |
210 | bob at the water level. BSPrim.PositionSanityCheck(). | 201 | bob at the water level. BSPrim.PositionSanityCheck() |
211 | Should taints check for existance or activeness of target? | 202 | Should taints check for existance or activeness of target? |
212 | When destroying linksets/etc, taints can be generated for objects that are | 203 | When destroying linksets/etc, taints can be generated for objects that are |
213 | actually gone when the taint happens. Crashes don't happen because the taint closure | 204 | actually gone when the taint happens. Crashes don't happen because the taint closure |
214 | keeps the object from being freed, but that is just an accident. | 205 | keeps the object from being freed, but that is just an accident. |
215 | Possibly have and 'active' flag that is checked by the taint processor? | 206 | Possibly have an 'active' flag that is checked by the taint processor? |
216 | Parameters for physics logging should be moved from BSScene to BSParam (at least boolean ones) | 207 | Parameters for physics logging should be moved from BSScene to BSParam (at least boolean ones) |
217 | Can some of the physical wrapper classes (BulletBody, BulletWorld, BulletShape) be 'sealed'? | 208 | Can some of the physical wrapper classes (BulletBody, BulletWorld, BulletShape) be 'sealed'? |
218 | There are TOO MANY interfaces from BulletSim core to Bullet itself | 209 | There are TOO MANY interfaces from BulletSim core to Bullet itself |
@@ -282,3 +273,18 @@ Redo BulletSimAPI to allow native C# implementation of Bullet option (DONE) | |||
282 | Meshes rendering as bounding boxes (DONE) | 273 | Meshes rendering as bounding boxes (DONE) |
283 | (Resolution: Added test for mesh/sculpties in native shapes so it didn't think it was a box) | 274 | (Resolution: Added test for mesh/sculpties in native shapes so it didn't think it was a box) |
284 | llMoveToTarget (Resolution: added simple motor to update the position.) | 275 | llMoveToTarget (Resolution: added simple motor to update the position.) |
276 | Angular motor direction is global coordinates rather than local coordinates (DONE) | ||
277 | Add 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) | ||
280 | VehicleAddForce 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) | ||
283 | Complete implemention of preStepActions (DONE) | ||
284 | Replace vehicle step call with prestep event. | ||
285 | Is there a need for postStepActions? postStepTaints? | ||
286 | Disable 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, ... | ||
289 | Remove 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 | ||