"""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])