opensim-development – Blame information for rev 1

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