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