Spaces:
Runtime error
Runtime error
JacobLinCool
commited on
Commit
·
842c883
1
Parent(s):
b2489b1
feat: support `--` when executed from blender
Browse filesFormer-commit-id: 808190204a388cacdc297b8777c73c0a624bf62f
- .gitignore +2 -0
- create.py +16 -14
.gitignore
CHANGED
@@ -150,3 +150,5 @@ cython_debug/
|
|
150 |
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
151 |
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
152 |
#.idea/
|
|
|
|
|
|
150 |
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
151 |
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
152 |
#.idea/
|
153 |
+
|
154 |
+
.DS_Store
|
create.py
CHANGED
@@ -44,8 +44,10 @@ parser.add_argument(
|
|
44 |
|
45 |
|
46 |
def main():
|
47 |
-
|
48 |
-
|
|
|
|
|
49 |
|
50 |
filepath = args.filepath
|
51 |
rotate_x = args.rotate_x
|
@@ -121,12 +123,12 @@ def capture(
|
|
121 |
|
122 |
# rotate the objects
|
123 |
bpy.ops.transform.rotate(value=math.pi * -0.5 +
|
124 |
-
deg_to_rad(rotate_x), orient_axis=
|
125 |
-
bpy.ops.transform.rotate(value=deg_to_rad(rotate_y), orient_axis=
|
126 |
bpy.ops.transform.rotate(value=math.pi * -0.5 +
|
127 |
-
deg_to_rad(rotate_z), orient_axis=
|
128 |
|
129 |
-
material = bpy.data.materials.new(
|
130 |
material.diffuse_color = (
|
131 |
color_r if color_r != -1 else 1, color_g if color_g != -1 else 1, color_b if color_b != -1 else 1, 1)
|
132 |
|
@@ -138,15 +140,15 @@ def capture(
|
|
138 |
|
139 |
# add light
|
140 |
bpy.ops.object.light_add(
|
141 |
-
type=
|
142 |
-
bpy.data.objects[
|
143 |
|
144 |
# add camera
|
145 |
bpy.ops.object.camera_add(
|
146 |
location=(distance * 3, 0, 0), rotation=(math.pi*0.5, 0, math.pi*0.5))
|
147 |
-
bpy.context.scene.camera = bpy.data.objects[
|
148 |
|
149 |
-
render(filepath.replace(
|
150 |
|
151 |
return
|
152 |
|
@@ -161,7 +163,7 @@ def log(any):
|
|
161 |
print("func:", key)
|
162 |
|
163 |
|
164 |
-
def render(out=os.path.join(os.getcwd(),
|
165 |
bpy.context.scene.render.filepath = out
|
166 |
bpy.context.scene.render.resolution_x = size
|
167 |
bpy.context.scene.render.resolution_y = size
|
@@ -170,8 +172,8 @@ def render(out=os.path.join(os.getcwd(), 'out.png'), size=2048):
|
|
170 |
|
171 |
|
172 |
def collection_dimensions(collection):
|
173 |
-
min_x = min_y = min_z = float(
|
174 |
-
max_x = max_y = max_z = float(
|
175 |
|
176 |
for obj in collection.objects:
|
177 |
min_x = min(min_x, obj.bound_box[0][0])
|
@@ -206,5 +208,5 @@ def reset():
|
|
206 |
collections.remove(collection)
|
207 |
|
208 |
|
209 |
-
if __name__ ==
|
210 |
main()
|
|
|
44 |
|
45 |
|
46 |
def main():
|
47 |
+
argv = sys.argv
|
48 |
+
argv = argv[argv.index("--") + 1:] if "--" in argv else argv[1:]
|
49 |
+
if len(argv) >= 1:
|
50 |
+
args = parser.parse_args(argv)
|
51 |
|
52 |
filepath = args.filepath
|
53 |
rotate_x = args.rotate_x
|
|
|
123 |
|
124 |
# rotate the objects
|
125 |
bpy.ops.transform.rotate(value=math.pi * -0.5 +
|
126 |
+
deg_to_rad(rotate_x), orient_axis="X")
|
127 |
+
bpy.ops.transform.rotate(value=deg_to_rad(rotate_y), orient_axis="Y")
|
128 |
bpy.ops.transform.rotate(value=math.pi * -0.5 +
|
129 |
+
deg_to_rad(rotate_z), orient_axis="Z")
|
130 |
|
131 |
+
material = bpy.data.materials.new("Color")
|
132 |
material.diffuse_color = (
|
133 |
color_r if color_r != -1 else 1, color_g if color_g != -1 else 1, color_b if color_b != -1 else 1, 1)
|
134 |
|
|
|
140 |
|
141 |
# add light
|
142 |
bpy.ops.object.light_add(
|
143 |
+
type="POINT", location=(light_x, light_y, light_z))
|
144 |
+
bpy.data.objects["Point"].data.energy = light_strength * 10
|
145 |
|
146 |
# add camera
|
147 |
bpy.ops.object.camera_add(
|
148 |
location=(distance * 3, 0, 0), rotation=(math.pi*0.5, 0, math.pi*0.5))
|
149 |
+
bpy.context.scene.camera = bpy.data.objects["Camera"]
|
150 |
|
151 |
+
render(filepath.replace(".svg", ".png"), size)
|
152 |
|
153 |
return
|
154 |
|
|
|
163 |
print("func:", key)
|
164 |
|
165 |
|
166 |
+
def render(out=os.path.join(os.getcwd(), "out.png"), size=2048):
|
167 |
bpy.context.scene.render.filepath = out
|
168 |
bpy.context.scene.render.resolution_x = size
|
169 |
bpy.context.scene.render.resolution_y = size
|
|
|
172 |
|
173 |
|
174 |
def collection_dimensions(collection):
|
175 |
+
min_x = min_y = min_z = float("inf")
|
176 |
+
max_x = max_y = max_z = float("-inf")
|
177 |
|
178 |
for obj in collection.objects:
|
179 |
min_x = min(min_x, obj.bound_box[0][0])
|
|
|
208 |
collections.remove(collection)
|
209 |
|
210 |
|
211 |
+
if __name__ == "__main__":
|
212 |
main()
|