diff --git a/model.blend b/model.blend new file mode 100644 index 0000000..63a373a Binary files /dev/null and b/model.blend differ diff --git a/package.json b/package.json index 0839011..5be5746 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { - "name": "cb-science", - "private": true, + "name": "clusterioMod", + "repository": "https://github.com/Danielv123/factorioClusterioMod", + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/render.cmd b/render.cmd new file mode 100644 index 0000000..e2a8f18 --- /dev/null +++ b/render.cmd @@ -0,0 +1,2 @@ +REM Pass the path to blender as the first argument +%1 --background --python-exit-code 1 model.blend --python render.py \ No newline at end of file diff --git a/render.py b/render.py new file mode 100644 index 0000000..47b8f9c --- /dev/null +++ b/render.py @@ -0,0 +1,76 @@ +import bpy + + +base_collection = bpy.data.scenes["Base"].view_layers["RenderLayer"].layer_collection +highlight_collection = bpy.data.scenes["Toon Highlight"].view_layers["RenderLayer"].layer_collection +shadows_collection = bpy.data.scenes["Toon Shadows"].view_layers["RenderLayer"].layer_collection + +def set_exclude(model, value): + base_collection.children[model].exclude = value + highlight_collection.children[f"Highlight {model}"].exclude = value + shadows_collection.children[f"Shadows {model}"].exclude = value + +def set_color(model, color): + for obj in base_collection.children[model].collection.all_objects.values(): + if len(obj.material_slots) < 3: + continue + obj.material_slots[1].material = bpy.data.materials[f"Liquid Surface {color}"] + obj.material_slots[2].material = bpy.data.materials[f"Liquid Glass {color}"] + +def render_bottle(color, model, output): + set_exclude(model, False) + set_color(model, color) + bpy.data.scenes["Base"].render.filepath = output + bpy.ops.render.render(write_still=True) + set_exclude(model, True) + +models = [ + "Cone", + "Cone Slim", + "Cone Inverted", + "Cylinder", + "Tube", + "Tubes Duo", + "Tubes Trio", + "Sphere", + "Sphere Tiny", + "Sphere Double", + "Sphere Tubed", + "Cube", + "Spiked", + "Pyramid", + "Triangle", + "Triangle Alt", + "Pentagon", + "Hexagon", +] + + +bottles = [ + ["Red", "Cone", "//src/graphics/red.png"], + ["Green", "Cube", "//src/graphics/green.png"], + ["Black", "Spiked", "//src/graphics/black.png"], + ["Cyan", "Sphere", "//src/graphics/cyan.png"], + ["Purple", "Sphere Double", "//src/graphics/purple.png"], + ["Yellow", "Triangle Alt", "//src/graphics/yellow.png"], + ["White", "Cone Inverted", "//src/graphics/white.png"], +] + +# Code to render a preview of all types +# bottles = [["Red", type, f"//types/{type}.png"] for type in models] + +# Code for prototyping speedup +# bpy.data.scenes["Base"].cycles.samples = 1024 + +# Set active scene so the highlights/shadows isn't accidentally rendered +bpy.context.window.scene = bpy.data.scenes["Base"] + +# Reset visibility of all bottles +for model in models: + set_exclude(model, True) + +# Render the bottles +for color, model, output in bottles: + render_bottle(color, model, output) + +print("Done!") \ No newline at end of file