diff --git a/media/attribution.js b/media/attribution.js
index caef320d..905a183f 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -19928,6 +19928,17 @@ const attributionData = {
"https://www.homedepot.com/p/8-in-x-4-in-x-2-in-Clay-Brick-20050276/100570450#product-overview"
]
},
+ {
+ prefix: "./media/objects/Barrels/",
+ all: null,
+ authors: [
+ "chemicalcrux"
+ ],
+ citations: [
+ "https://learn.kegerator.com/keg-sizes/",
+ "https://bascousa.com/blog/55-gallon-drum-dimensions-height-weight/"
+ ]
+ },
{
prefix: "./media/real-buildings/",
all: "https://wiki.openstreetmap.org/wiki/Blender",
diff --git a/media/objects/Barrels/55 Gallon Drum-Front.svg b/media/objects/Barrels/55 Gallon Drum-Front.svg
new file mode 100644
index 00000000..7f1c5edc
--- /dev/null
+++ b/media/objects/Barrels/55 Gallon Drum-Front.svg
@@ -0,0 +1,76 @@
+
+
diff --git a/media/objects/Barrels/55 Gallon Drum-Top.svg b/media/objects/Barrels/55 Gallon Drum-Top.svg
new file mode 100644
index 00000000..d3d9a935
--- /dev/null
+++ b/media/objects/Barrels/55 Gallon Drum-Top.svg
@@ -0,0 +1,58 @@
+
+
diff --git a/media/objects/Barrels/Half Barrel Keg-Front.svg b/media/objects/Barrels/Half Barrel Keg-Front.svg
new file mode 100644
index 00000000..dabd6957
--- /dev/null
+++ b/media/objects/Barrels/Half Barrel Keg-Front.svg
@@ -0,0 +1,79 @@
+
+
diff --git a/media/objects/Barrels/Half Barrel Keg-Top.svg b/media/objects/Barrels/Half Barrel Keg-Top.svg
new file mode 100644
index 00000000..08d790c3
--- /dev/null
+++ b/media/objects/Barrels/Half Barrel Keg-Top.svg
@@ -0,0 +1,70 @@
+
+
diff --git a/media/objects/Barrels/Sixer Keg-Front.svg b/media/objects/Barrels/Sixer Keg-Front.svg
new file mode 100644
index 00000000..ca3e0042
--- /dev/null
+++ b/media/objects/Barrels/Sixer Keg-Front.svg
@@ -0,0 +1,73 @@
+
+
diff --git a/media/objects/Barrels/Sixer Keg-Top.svg b/media/objects/Barrels/Sixer Keg-Top.svg
new file mode 100644
index 00000000..4e4be078
--- /dev/null
+++ b/media/objects/Barrels/Sixer Keg-Top.svg
@@ -0,0 +1,64 @@
+
+
diff --git a/presets/objects.js b/presets/objects.js
index 8285c4a7..5b3f543d 100644
--- a/presets/objects.js
+++ b/presets/objects.js
@@ -949,6 +949,7 @@ function makeObjects() {
/* ***Sex Toys*** */ results.push(makeModel({"name": "Sex Toys", "kind": "objects", "forms": [{"name": "Chance", "views": [{"name": "Front", "height": 0.44450023770332336, "volume": 0.0024940192673095084}, {"name": "Side", "height": 0.44450023770332336, "volume": 0.0024940192673095084}, {"name": "Top", "height": 0.18736252188682556, "volume": 0.0024940192673095084}]}, {"name": "Fenrir", "views": [{"name": "Front", "height": 0.32130947709083557, "volume": 0.0014611460855557515}, {"name": "Side", "height": 0.32130947709083557, "volume": 0.0014611460855557515}, {"name": "Top", "height": 0.11701348423957825, "volume": 0.0014611460855557515}]}]}));
/* ***LEGO*** */ results.push(makeModel({"name": "LEGO", "kind": "objects", "forms": [{"name": "1x1", "views": [{"name": "Front", "height": 0.01119999960064888, "volume": 3.3640754098503267e-07}, {"name": "Angled", "height": 0.01119999960064888, "volume": 3.3640754098503267e-07}, {"name": "Side", "height": 0.01119999960064888, "volume": 3.3640754098503267e-07}, {"name": "Top", "height": 0.00800000037997961, "volume": 3.3640754098503267e-07}, {"name": "Bottom", "height": 0.00800000037997961, "volume": 3.3640754098503267e-07}]}, {"name": "1x2", "views": [{"name": "Front", "height": 0.011200000531971455, "volume": 5.669391684500056e-07}, {"name": "Angled", "height": 0.011200000531971455, "volume": 5.669391684500056e-07}, {"name": "Side", "height": 0.011200000531971455, "volume": 5.669391684500056e-07}, {"name": "Top", "height": 0.00800000037997961, "volume": 5.669391684500056e-07}, {"name": "Bottom", "height": 0.00800000037997961, "volume": 5.669391684500056e-07}]}, {"name": "2x2", "views": [{"name": "Front", "height": 0.01119999960064888, "volume": 1.0245981619502385e-06}, {"name": "Angled", "height": 0.01119999960064888, "volume": 1.0245981619502385e-06}, {"name": "Side", "height": 0.01119999960064888, "volume": 1.0245981619502385e-06}, {"name": "Top", "height": 0.01600000075995922, "volume": 1.0245981619502385e-06}, {"name": "Bottom", "height": 0.01600000075995922, "volume": 1.0245981619502385e-06}]}, {"name": "2x4", "views": [{"name": "Front", "height": 0.011200000531971455, "volume": 1.939916458324457e-06}, {"name": "Angled", "height": 0.011200000531971455, "volume": 1.939916458324457e-06}, {"name": "Side", "height": 0.011200000531971455, "volume": 1.939916458324457e-06}, {"name": "Top", "height": 0.01600000075995922, "volume": 1.939916458324457e-06}, {"name": "Bottom", "height": 0.01600000075995922, "volume": 1.939916458324457e-06}]}]}));
/* ***Bricks*** */ results.push(makeModel({"name": "Bricks", "kind": "objects", "forms": [{"name": "Cinderblock", "views": [{"name": "Front", "height": 0.1936749964952469, "volume": 0.0072986710396893105}, {"name": "Angled", "height": 0.1936749964952469, "volume": 0.0072986710396893105}, {"name": "Side", "height": 0.1936749964952469, "volume": 0.0072986710396893105}, {"name": "Top", "height": 0.1936749964952469, "volume": 0.0072986710396893105}]}, {"name": "Clay Brick", "views": [{"name": "Front", "height": 0.05714999884366989, "volume": 0.0008421204681292792}, {"name": "Angled", "height": 0.05714999884366989, "volume": 0.0008421204681292792}, {"name": "Side", "height": 0.05714999884366989, "volume": 0.0008421204681292792}, {"name": "Top", "height": 0.10159999877214432, "volume": 0.0008421204681292792}]}]}));
+ /* ***Barrels*** */ results.push(makeModel({"name": "Barrels", "kind": "objects", "forms": [{"name": "55 Gallon Drum", "views": [{"name": "Front", "height": 0.8716663122177124, "volume": 0.20819799602031708}, {"name": "Top", "height": 0.617232084274292, "volume": 0.20819799602031708}]}, {"name": "Sixer Keg", "views": [{"name": "Front", "height": 0.5937249660491943, "volume": 0.02345781959593296}, {"name": "Top", "height": 0.2349499762058258, "volume": 0.02345781959593296}]}, {"name": "Half Barrel Keg", "views": [{"name": "Front", "height": 0.5937249660491943, "volume": 0.07046438753604889}, {"name": "Top", "height": 0.42044833302497864, "volume": 0.07046438753604889}]}]}));
/* ***INSERT HERE*** */
return results;
}
diff --git a/scripts/blender-model.py b/scripts/blender-model.py
index b34382af..edac0920 100644
--- a/scripts/blender-model.py
+++ b/scripts/blender-model.py
@@ -4,7 +4,14 @@ from math import pi, sqrt
import json
import os
import pathlib
-import bmesh
+
+VIEW_DATA = {
+ "Front": [0, 1, 2, "Front"],
+ "Angled": [0.5, 1, 2, "Angled"],
+ "Side": [1, 1, 2, "Side"],
+ "Back": [2, 1, 2, "Back"],
+ "Top": [0, 0, 1, "Top"]
+}
def get_bounds(objects):
xl = []
@@ -12,11 +19,12 @@ def get_bounds(objects):
zl = []
for obj in objects:
- for bounds in obj.bound_box:
- v = obj.matrix_world @ Vector(bounds)
- xl += [v[0] for c in obj.bound_box]
- yl += [v[1] for c in obj.bound_box]
- zl += [v[2] for c in obj.bound_box]
+ if not obj.hide_render:
+ for bounds in obj.bound_box:
+ v = obj.matrix_world @ Vector(bounds)
+ xl += [v[0] for c in obj.bound_box]
+ yl += [v[1] for c in obj.bound_box]
+ zl += [v[2] for c in obj.bound_box]
return (
Vector([min(xl), min(yl), min(zl)]),
@@ -50,18 +58,15 @@ all_data["name"] = mv["MVName"]
all_data["kind"] = mv["MVKind"]
all_data["forms"] = []
+default_views = []
+
+for view in mv["MVViews"].split(","):
+ default_views.append(VIEW_DATA[view])
+
workdir = pathlib.Path(parent_workdir).joinpath(all_data["name"])
os.makedirs(workdir, exist_ok=True)
-VIEW_DATA = {
- "Front": [0, 1, 2, "Front"],
- "Angled": [0.5, 1, 2, "Angled"],
- "Side": [1, 1, 2, "Side"],
- "Back": [2, 1, 2, "Back"],
- "Top": [0, 0, 1, "Top"]
-}
-
for coll in collections:
coll.hide_render = True
@@ -89,7 +94,7 @@ for coll in collections:
for view in coll["Views"].split(","):
view_list.append(VIEW_DATA[view])
else:
- view_list = [VIEW_DATA["Front"]]
+ view_list = default_views
for angles in view_list:
c.location = global_bbox_center
@@ -108,7 +113,7 @@ for coll in collections:
"height": dimensions[angles[2]]
})
- if coll["Volume"]:
+ if "Volume" in coll:
data["views"][-1]["volume"] = coll["Volume"]
filename = f"{coll.name}-{angles[3]}.png"