Quality Glassware
A set of flask graphics assets for mods to use in Factorio.
This commit is contained in:
commit
8d9a16b307
564 changed files with 1079 additions and 0 deletions
119
render.py
Normal file
119
render.py
Normal file
|
@ -0,0 +1,119 @@
|
|||
import bpy
|
||||
import os
|
||||
|
||||
base_path = "src/graphics/technology"
|
||||
|
||||
base_collection = bpy.data.scenes["Scene"].view_layers["Base"].layer_collection
|
||||
shadows_collection = bpy.data.scenes["Scene"].view_layers["Shadows"].layer_collection
|
||||
|
||||
def set_exclude(model, value):
|
||||
base_collection.children[model].exclude = value
|
||||
shadows_collection.children[model].exclude = value
|
||||
|
||||
def set_color(model, variant, values):
|
||||
for obj in base_collection.children[model].collection.all_objects.values():
|
||||
if obj.data.name == "Floor":
|
||||
obj.hide_render = False
|
||||
if "liquid_color" not in obj:
|
||||
continue
|
||||
obj["liquid_color"][0] = values[0]
|
||||
obj["liquid_color"][1] = values[1]
|
||||
obj["liquid_color"][2] = values[2]
|
||||
obj.update_tag()
|
||||
glass = "glass_frozen" if variant == "frozen" else "glass_no_back_grime"
|
||||
obj.material_slots[0].material = bpy.data.materials[glass]
|
||||
obj.material_slots[1].material = bpy.data.materials[f"liquid_clear_surface"]
|
||||
obj.material_slots[2].material = bpy.data.materials[f"liquid_clear_glass"]
|
||||
|
||||
def set_empty(model, variant):
|
||||
for obj in base_collection.children[model].collection.all_objects.values():
|
||||
if obj.data.name == "Floor":
|
||||
obj.hide_render = True
|
||||
if "liquid_color" not in obj:
|
||||
continue
|
||||
glass = "glass_frozen" if variant == "frozen" else "glass_no_back_grime"
|
||||
obj.material_slots[0].material = bpy.data.materials[glass]
|
||||
obj.material_slots[1].material = bpy.data.materials[f"transparent"]
|
||||
obj.material_slots[2].material = bpy.data.materials[f"glass_inside"]
|
||||
|
||||
|
||||
def render_bottle(color, variant, model, output):
|
||||
set_exclude(model, False)
|
||||
if color != "empty":
|
||||
set_color(model, variant, colors[color])
|
||||
else:
|
||||
set_empty(model, variant)
|
||||
bpy.data.scenes["Scene"].render.filepath = output
|
||||
bpy.ops.render.render(write_still=True)
|
||||
set_exclude(model, True)
|
||||
|
||||
models = [
|
||||
"cone_normal",
|
||||
"cone_slim",
|
||||
"cone_inverted",
|
||||
"cylinder",
|
||||
"tube_one",
|
||||
"tube_two",
|
||||
"tube_three",
|
||||
"sphere_normal",
|
||||
"sphere_tiny",
|
||||
"sphere_double",
|
||||
"sphere_tubed",
|
||||
"sphere_hemi",
|
||||
"sphere_spiked",
|
||||
"hourglass",
|
||||
"torus",
|
||||
"klein",
|
||||
"pyramid",
|
||||
"cube",
|
||||
"triangle",
|
||||
"triangle_alt",
|
||||
"pentagon",
|
||||
"hexagon",
|
||||
]
|
||||
|
||||
colors = {
|
||||
"red": [0.554, 0.044, 0.046],
|
||||
"green": [0.075, 0.573, 0.075],
|
||||
"black": [0.050, 0.050, 0.050],
|
||||
"cyan": [0.066, 0.430, 0.592],
|
||||
"purple": [0.233, 0.039, 0.372],
|
||||
"yellow": [0.536, 0.402, 0.000],
|
||||
"white": [0.515, 0.534, 0.555],
|
||||
"orange": [0.644, 0.277, 0.012],
|
||||
"pink": [0.557, 0.043, 0.433],
|
||||
"blue": [0.038, 0.050, 0.606],
|
||||
"lime": [0.523, 0.570, 0.000],
|
||||
"empty": None,
|
||||
}
|
||||
|
||||
|
||||
# Code to render all types
|
||||
bottles = []
|
||||
for model in models:
|
||||
bottles.append(["empty", "clear", model, f"//{base_path}/{model}_empty.png"])
|
||||
variants = ["clear"]
|
||||
if model == "cone_normal":
|
||||
variants.append("frozen")
|
||||
for variant in variants:
|
||||
for color in colors:
|
||||
if color == "empty":
|
||||
continue
|
||||
bottles.append([color, variant, model, f"//{base_path}/{model}_{variant}_{color}.png"])
|
||||
|
||||
# Code for prototyping speedup
|
||||
#bpy.data.scenes["Scene"].cycles.samples = 1024
|
||||
|
||||
# Reset visibility of all bottles
|
||||
for model in models:
|
||||
set_exclude(model, True)
|
||||
|
||||
# Render the bottles
|
||||
for color, variant, model, output in bottles:
|
||||
# Code to only render files that don't exist
|
||||
#if os.path.exists(bpy.path.abspath(output)): continue
|
||||
|
||||
print("Rendering", output)
|
||||
render_bottle(color, variant, model, output)
|
||||
|
||||
print("Done!")
|
Loading…
Add table
Add a link
Reference in a new issue