~osomon/phatch/extract-all-metadata

« back to all changes in this revision

Viewing changes to phatch/actions/blender.py

  • Committer: spe.stani.be at gmail
  • Date: 2009-09-15 19:55:39 UTC
  • mfrom: (1176.1.88 phatch-blender)
  • Revision ID: spe.stani.be@gmail.com-20090915195539-dpmhmaovmqljj695
updated blender action

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
floor_opacity:%%(floor_opacity)s \
45
45
camera_lens_angle:%%(camera_lens_angle)s \
46
46
camera_distance:%%(camera_distance)s \
47
 
rotation_x:%%(rotation_x)s rotation_y:%%(rotation_y)s \
48
 
rotation_z:%%(rotation_z)s"""
 
47
rotation_x:%%(roll)s rotation_y:%%(vertical_rotation)s \
 
48
rotation_z:%%(horizontal_rotation)s"""
49
49
COMMANDS = {
50
50
    _t('Box'):
51
51
        COMMAND%'box_color:%(box_color)s box_depth:%(box_depth)s',
58
58
OBJECTS.sort()
59
59
BACKGROUNDS = [_t('Color'), _t('Gradient'), _t('Transparent')]
60
60
 
61
 
SIZE_OPTIONS = [_t('Fit Image'), _t('Scale Image'), #_t('Scale Model'),
 
61
SIZE_OPTIONS = [_t('Fit Image'), _t('Scale Image'), _t('Scale Model'),
62
62
    _t('Letterbox')]
63
63
 
64
64
 
85
85
        fields[_t('Box Color')] = self.ColorField('#FFFFFF')
86
86
        fields[_t('Box Depth')] = self.PixelField('10%')
87
87
        fields[_t('Lid Rotation')] = self.SliderField(0, 0, 300)
 
88
        fields[_t('Transparant Background')] = self.BooleanField(False)
88
89
        fields[_t('Show Background Options')] = self.BooleanField(False)
89
90
        fields[_t('Background')] = self.ChoiceField('Gradient',
90
91
            choices=BACKGROUNDS)
102
103
        fields[_t('Floor Opacity')] = self.SliderField(100, 0, 100)
103
104
        fields[_t('Show Camera Options')] = self.BooleanField(False)
104
105
        fields[_t('Camera Lens Angle')] = self.SliderField(51, 8, 172)
105
 
        fields[_t('Camera Distance')] = self.SliderField(2, 0, 20)
106
 
        fields[_t('Camera Rotation')] = self.BooleanField(False)
107
 
        fields[_t('Rotation X')] = self.SliderField(0, 0, 90)
108
 
        fields[_t('Rotation Y')] = self.SliderField(0, 0, 90)
109
 
        fields[_t('Rotation Z')] = self.SliderField(0, -180, 180)
 
106
        fields[_t('Camera Distance')] = self.SliderField(2, 0, 10)
 
107
        fields[_t('Show Camera Rotation')] = self.BooleanField(False)
 
108
        fields[_t('Horizontal Rotation')] = self.SliderField(30, -180, 180)
 
109
        fields[_t('Vertical Rotation')] = self.SliderField(0, 0, 90)
 
110
        fields[_t('Roll')] = self.SliderField(0, -90, 90)
110
111
 
111
112
    def get_relevant_field_labels(self):
112
113
        """If this method is present, Phatch will only show relevant
128
129
        if obj == 'Cd':
129
130
            relevant.extend(['Lid Rotation', ])
130
131
 
131
 
        relevant.extend(['Show Background Options'])
132
 
        if self.is_field_true('Show Background Options'):
133
 
            relevant.extend(['Background'])
134
 
            background = self.get_field_string('Background')
135
 
            if background == 'Color':
136
 
                relevant.append('Background Color')
137
 
            elif background == 'Transparent':
138
 
                relevant.extend(['Auto Crop'])
139
 
            else:
140
 
                relevant.extend(['Gradient Top', 'Gradient Bottom'])
141
 
            if background != 'Transparent':
142
 
                relevant.extend(['Stars', 'Mist'])
143
 
                if self.is_field_true('Stars'):
144
 
                    relevant.extend(['Stars Color'])
145
 
 
146
 
        relevant.extend(['Show Floor Options'])
147
 
        if self.is_field_true('Show Floor Options'):
148
 
            relevant.extend(['Use Floor'])
149
 
            if self.is_field_true('Use Floor'):
150
 
                relevant.extend(['Floor Color', 'Floor Reflection',
151
 
                    'Floor Opacity'])
152
 
 
153
 
        relevant.extend(['Show Camera Options'])
 
132
        relevant.extend(['Transparant Background'])
 
133
        if self.is_field_true('Transparant Background'):
 
134
            relevant.extend(['Auto Crop'])
 
135
        else:
 
136
            relevant.extend(['Show Background Options'])
 
137
 
 
138
            if self.is_field_true('Show Background Options'):
 
139
                relevant.extend(['Background'])
 
140
                background = self.get_field_string('Background')
 
141
                if background == 'Color':
 
142
                    relevant.append('Background Color')
 
143
                elif background == 'Transparent':
 
144
                    relevant.extend(['Auto Crop'])
 
145
                else:
 
146
                    relevant.extend(['Gradient Top', 'Gradient Bottom'])
 
147
                if background != 'Transparent':
 
148
                    relevant.extend(['Stars', 'Mist'])
 
149
                    if self.is_field_true('Stars'):
 
150
                        relevant.extend(['Stars Color'])
 
151
 
 
152
                relevant.extend(['Show Floor Options'])
 
153
                if self.is_field_true('Show Floor Options'):
 
154
                    relevant.extend(['Use Floor'])
 
155
                    if self.is_field_true('Use Floor'):
 
156
                        relevant.extend(['Floor Color', 'Floor Reflection',
 
157
                            'Floor Opacity'])
 
158
 
 
159
        relevant.extend(['Show Camera Options', 'Show Camera Rotation'])
154
160
        if self.is_field_true('Show Camera Options'):
155
 
            relevant.extend(['Camera Lens Angle', 'Camera Distance',
156
 
                'Camera Rotation'])
157
 
            if self.is_field_true('Camera Rotation'):
158
 
                relevant.extend(['Rotation X', 'Rotation Y', 'Rotation Z'])
 
161
            relevant.extend(['Camera Lens Angle', 'Camera Distance'])
 
162
 
 
163
        if self.is_field_true('Show Camera Rotation'):
 
164
            relevant.extend(['Roll', 'Vertical Rotation',
 
165
                'Horizontal Rotation'])
159
166
 
160
167
        return relevant
161
168
 
178
185
 
179
186
        command = self.construct_command(values)
180
187
 
181
 
        photo.call(command, unlock=True)
 
188
        photo.call(command)
182
189
 
183
190
        if self.get_field('Auto Crop', info):
184
191
            layer = photo.get_layer()
195
202
        object = self.get_field_string('Object')
196
203
        values['object'] = object
197
204
 
198
 
        values['blend'] = os.path.join(blender_path,
199
 
            object.lower()+'.blend')
 
205
        values['blend'] = os.path.join(blender_path, object.lower()+'.blend')
200
206
 
201
207
        # TODO: get rid of values['script'] = 'box'. It should not be needed!
202
208
        values['script'] = 'box'
209
215
 
210
216
        values['alpha'] = values['background'] == 'Transparent'
211
217
 
 
218
        if values['transparant_background']:
 
219
            values['alpha'] = True
 
220
            values['use_floor'] = False
 
221
 
212
222
        return COMMANDS[object]%values
213
223
 
214
224
    icon = \