-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO.txt
95 lines (82 loc) · 4.34 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Todo
====
Functionality
-------------
- tweak parameter for octree (OOBB.cpp) measure time for octree - octree intersection
- high CPU usage when simulation is paused ('P') -> fix
- NGH Actual physically accurate precession, nutation!
- Maybe: Resting contacts if too much time.
- Ignore key presses, when cmd is pressed.
- reduce octree rendering workload. Create one single octree per rigidbody instead of hundreds of lines.
Tweaking
--------
- put COM of sp4 higher so it hopefully tips over.
- Change mass and see if the spinnning top spins differently (less mass -> better spin) (SpinIt)
Cosmetic
--------
- viualize contact points and forces (maybe only when paused) (press not 'V')
- NGH Shadow mapping
- NGH GUI with labels which buttons can be pressed and their impact
- NGH Sound (collision, fritcion, fade out)
Bugs
----
- Variable firstTime in RigidBody.cpp seams to be wrongly set. Is set each time on ground contact and not only on first time.
- camera moving sometimes gets stuck an continues moving in one direction till this button is pressed again.
Done
----
- decrease CPU and GPU usage. Even with one simple Spinning top and the ground, quite high usage.
- Fix 'L' key
- correct normal of lower ground to make it darker
- change m_orientation of RigidBody to quaternion.
- change repository to GIT
- loading screen (or faster loading ^^) (http://www.glfw.org/documentation.html as reference)
- More spinning top models
- planar shadows
- st1, 2, 3 etc disappear when colliding upsidedown
- slow motion
- fix collision handling with plane -> pixar pdf
- ST1 tips over? (But ST3 doesn't...)
recreating the mesh fixed the problem, but it is unclear why.
- test big timesteps. Current implementation should be able to handle those (bisection), but probably doesn't :-/
the bisection only correctly handles collisions, but euler still has problems with big timesteps
- check normals in meshes. Specially sp3 and sp4, where the lowest vertex does have strange normals -> no collision detection
Normal calculation was incorrect
- change the COM for a spinning top and see if it spins differently (lower COM -> better spin) (SpinIt)
Yes, it spins differently, but it is unclear if correctly.
- Order of events: can't check for collisions after only updating position?!
- create array / vector of all spinning tops at the beginning. Calculate inertia tensor (this is setMesh() only once) etc. Idealy save these inertia tensors as files and reload them the next time. Calculating a good inertia tensor takes more than 5 seconds.
- Maybe whole interia tensor calculation can happen in a seperate class (pass ptr to a Mesh to the function?) -> too much unused code in Rigid body if matrix is precomputed anyway...
- introduce state objects to allow better timesteps and rewind.
- pause simulation and rewinding
- Table instead of ground
- Texturing: wood, steel
- Visualize the COM with a red dot, which is always visible
- Skybox
- Timestep: Why doesn't this give the desired results? http://gafferongames.com/game-physics/fix-your-timestep/
Because spinning top - ground collision took way too much time
- STs disappear when spinning "too fast"
the orientation quaternion was not normalized in for some calculations
- Maybe: Octree if performance not good enough.
Done, but needs to be improved
- visualize an arbitrary point in world coordinates
- Arbitrary collisions
Still too slow
- NxN collision checks between objects with triangle-triangle intersection tests -> this should return collision point / line / area somehow
- nicer table textures
- tweak Ground friction / rotational friction
Hard to make better. Not too bad right now.
- wireframe modus (press 'F')
Links
=====
More about angular velocity:
http://en.wikipedia.org/wiki/Angular_velocity
More about collisions:
http://en.wikipedia.org/wiki/Collision_response (Includes Impulse-Based Friction Model!)
Awesome(?) paper (same as wiki but with explanations!)
http://docs.google.com/fileview?id=0Bze6mKYvrpOKYjdkODVhMTAtM2Q4Zi00NzgyLWE2YzMtN2MwZmQ4NjA3OWMw&hl=en
Realtime Rigid Body Simulation Using Impulses:
http://files.slembcke.net/misc/RigidBodies.pdf
http://gafferongames.com/virtualgo/how-the-go-stone-moves/
http://gafferongames.com/virtualgo/collision-detection-go-stone-vs-go-board/
http://gafferongames.com/virtualgo/rotation-and-inertia-tensors/
http://gafferongames.com/virtualgo/collision-response-and-coulomb-friction/