49 lines
2.0 KiB
Python
49 lines
2.0 KiB
Python
"""Synthetic integration fixture; does not use any user's project assets."""
|
|
import bpy
|
|
import sys
|
|
bpy.ops.object.select_all(action='SELECT')
|
|
bpy.ops.object.delete(use_global=False)
|
|
scene = bpy.context.scene
|
|
scene.name = 'ExportFixture'
|
|
scene.frame_start, scene.frame_end, scene.render.fps = 1, 3, 24
|
|
bpy.ops.mesh.primitive_cube_add()
|
|
obj = bpy.context.object
|
|
obj.name = 'AnimatedCube'
|
|
material = bpy.data.materials.new('AnimatedMaterial')
|
|
material.use_nodes = True
|
|
obj.data.materials.append(material)
|
|
tree = material.node_tree
|
|
principled = tree.nodes.get('Principled BSDF')
|
|
noise = tree.nodes.new('ShaderNodeTexNoise')
|
|
noise.noise_dimensions = '4D'
|
|
noise.inputs['W'].driver_add('default_value').driver.expression = 'frame * 0.7'
|
|
tree.links.new(noise.outputs['Color'], principled.inputs['Base Color'])
|
|
for frame, value in [(1, .2), (3, .8)]:
|
|
principled.inputs['Roughness'].default_value = value
|
|
principled.inputs['Roughness'].keyframe_insert('default_value', frame=frame)
|
|
obj.shape_key_add(name='Basis')
|
|
key = obj.shape_key_add(name='Stretch')
|
|
key.data[0].co.z += 1
|
|
for frame, value in [(1, 0), (3, 1)]:
|
|
key.value = value
|
|
key.keyframe_insert('value', frame=frame)
|
|
bpy.ops.object.camera_add(location=(0, 0, 5))
|
|
scene.camera = bpy.context.object
|
|
scene.camera.name = 'ActiveCameraObject'
|
|
scene.camera.data.name = 'ActiveCameraData'
|
|
bpy.ops.object.light_add(type='POINT', location=(0, -2, 3))
|
|
bpy.context.object.data.energy = 100
|
|
curve = bpy.data.curves.new('CurveGeometry', 'CURVE')
|
|
curve.dimensions = '3D'
|
|
curve.bevel_depth = .1
|
|
spline = curve.splines.new('POLY')
|
|
spline.points.add(1)
|
|
spline.points[0].co, spline.points[1].co = (0, 0, 0, 1), (1, 1, 1, 1)
|
|
curve_obj = bpy.data.objects.new('ConvertedCurve', curve)
|
|
scene.collection.objects.link(curve_obj)
|
|
# A second scene must not leak into the chosen scene's export.
|
|
other = bpy.data.scenes.new('ExcludedScene')
|
|
other.collection.objects.link(bpy.data.objects.new('UnrelatedObject', bpy.data.meshes.new('Unused')))
|
|
scene.frame_set(1)
|
|
bpy.ops.wm.save_as_mainfile(filepath=sys.argv[sys.argv.index('--') + 1])
|