forked from vfxetc/mayatools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.txt
143 lines (97 loc) · 4.73 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
General
-------
- mayatools.lock:unlock_selected
OR
mayatools.dag:unlock with pass_selection_as_args=true in shelf.yml and recurse=True
- Create code linter that warns of short flags and replaces them with long flags
via `cmds.help('playblast', syntaxOnly=True)`
- ks.maya.workspace.set_from_path and set_from_entity and set_from_environ
- current_path()
- current_entity()
- setup_auto_hook()
- mayatools.file.set_version(old_path, 28, active=False)
- swaps out the version numbers, then increments revision until it is
unique
- active=True attempts to open the file for writing so that we know that
it doesn't exist, and that if it does then we own it
os.open(path, os.O_CREAT | os.O_EXCL) and catch errno.EEXIST
- mayatools.file.save_copy_as(new_path, force=True)
- Way to have settings dialog for the Playblaster so that they can disable the
"renderOffscreen" setting?
- General MayaDialog with settings that saves to dotfile in user's home?
- Isolate quicktime modules from key_base.
- Implement fluid retimer as Cython, or maybe even as a Maya plugin that runs
in real-time.
Fluids
--------------
- may need to advect the two frames and then do a linear blend on them
- see Wikipedia for the hairy math http://en.wikipedia.org/wiki/Advection
- google for "fluid advect c++"
- two step? http://code.google.com/p/fluidic/source/browse/trunk/Resources/Advect.cg?r=15
- do this at the very end
- How is velocity laid out?
It is on the surfaces bettween voxels.
Test to set velocities:
for x in range(3):
for y in range(5):
for z in range(7):
cmds.setFluidAttr(at='density', xi=x, yi=y, zi=z, fv=(x + y + z))
cmds.setFluidAttr(at='velocity', xi=x, yi=y, zi=z, vv=(x + 1, y + 1, z + 1))
Duncan says:
Velocity is defined at voxel boundaries, not the centers (it takes a little thinking to appreciate this fully). Thus for a 10x10x10 grid the velocityX grid will be (11,10,10), the velocityY(10,11,10) and the velocityZ(10,10,11).
The API docs also clarify quite well:
http://download.autodesk.com/us/maya/2011help/API/class_m_fn_fluid.html#0ae37ed733007e9eb82dbe2231335293
Looking at the raw data set via cmds.setFluidAttr(..., lowerFace=True), the X values go (0, 1, 2, 2), the Y (0, 1, 2, 3, 4, 4),
and the Z do the same. They also iterate in the same Z,Y,X order that the density does.
- Tests:
densities:
- set density to X/Y/Z coordinate + 1
densities/combined.mc
- set density to (x * 100 + y * 10 + z)
fluid-velocities-1:
- set density to x/y/z coordinate + 1
- set velocity to (1, 0, 0) for X
- does not use lowerFace for velocity
- combined -> cmds.setFluidAttr(at='velocity', xi=x, yi=y, zi=z, vv=(x, y, z), lowerFace=True)
- My tests indicate that the velocities are in local coordinates (even after
rotating and scaling, and that my velocity lookup code is good).
- Do velocities need to be scaled by the "rate scale"?
Cameras
-------
- remember which camera was selected in previous export
- test baking camera to world space:
cmds.file(new=True, force=True)
dolly = cmds.createNode('transform', name='dolly')
camera = 'perspShape'
transform = 'persp'
cmds.parent(persp, dolly)
cmds.move(3, 4, 5, dolly)
child = cmds.spaceLocator(name='baggage')
cmds.parent(child, transform)
Playblasts
----------
- Playblasting on the farm.
- Could try using Xvfb...
- sg06 has Xvfb
- sg05 has it on Fedora 14
- 2011 still crashes
- 2012 gets to ask about preferences
- Crashes when Maya tries to enumerate input devices.
- Xlib: extension "XInputExtension" missing on display ":100.0".
- screenshot with: DISPLAY=:5 import -window root screenshot.png
- Maybe with Xvnc or vncserver?
# Start the virtual X server.
Xvfb :100 -screen 0 1920x1080x24
# Launch Maya.
DISPLAY=:100 maya2013
# Take a screenshot.
DISPLAY=:100 import -window root ~/Desktop/screenshot.png
KEY_TOOLS_PYTHONPATH= KEY_TOOLS_START_LOCATION=local KEY_TOOLS_DEV_PORT=50124 DISPLAY=:100 maya2013
DISPLAY=:100 import -window root screenshot.png
python "cmds.file('/Volumes/VFX/Projects/Testing_Sandbox/SEQ/GC/GC_001_001/Anim/maya/scenes/GC_001_001_Anim_stack_anim_v0002_r0002.mb', open=True, f=True)"
select -all
displaySmoothness -divisionsU 3 -divisionsV 3 -pointsWire 16 -pointsShaded 4 -polygonObject 3;
subdivDisplaySmoothness -smoothness 3;
select -clear
python "cmds.playblast(f='playblast2.mov', offScreen=True, forceOverwrite=True, percent=100, width=960, height=540, viewer=False, showOrnaments=False)"
/Volumes/VFX/home/mboers/maya/playblast2.mov