diff --git a/media/attribution.js b/media/attribution.js
index efa7a6dd..d8f289d0 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -1567,10 +1567,11 @@ const attributionData = {
{
prefix: "./media/characters/amanda/",
files: [
- { name: "front.svg", source: "https://www.furaffinity.net/view/33462160/" }
+ { name: "front.svg", source: "https://www.furaffinity.net/view/39646317/" },
+ { name: "back.svg", source: "https://www.furaffinity.net/view/39646317/" },
],
authors: [
- "spunky"
+ "jerberjer"
],
owners: [
"matty-the-mouse"
@@ -19024,6 +19025,13 @@ const attributionData = {
"davilion"
]
},
+ {
+ prefix: "./media/objects/Glassware/",
+ all: null,
+ authors: [
+ "chemicalcrux"
+ ]
+ },
{
prefix: "./media/objects/Condoms/",
all: "https://pasante.com/products/a4-shape-size-guide-pack-of-5",
@@ -19902,10 +19910,6 @@ const attributionData = {
"name": "spaceweasel2306",
"url": "https://www.furaffinity.net/user/spaceweasel2306/"
},
- "spunky": {
- "name": "Spunky",
- "url": "https://www.furaffinity.net/user/spunky"
- },
"spyropurple": {
"name": "spyropurple",
"url": "https://www.furaffinity.net/user/spyropurple/"
diff --git a/media/characters/amanda/back.svg b/media/characters/amanda/back.svg
new file mode 100644
index 00000000..a68587c1
--- /dev/null
+++ b/media/characters/amanda/back.svg
@@ -0,0 +1,426 @@
+
+
+
diff --git a/media/characters/amanda/front.svg b/media/characters/amanda/front.svg
index 5e62551d..9bb6d856 100644
--- a/media/characters/amanda/front.svg
+++ b/media/characters/amanda/front.svg
@@ -1,79 +1,794 @@
-
+
diff --git a/media/objects/Glassware/Erlenmeyer 250mL-Front.svg b/media/objects/Glassware/Erlenmeyer 250mL-Front.svg
new file mode 100644
index 00000000..943c1aff
--- /dev/null
+++ b/media/objects/Glassware/Erlenmeyer 250mL-Front.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Erlenmeyer 250mL-Side.svg b/media/objects/Glassware/Erlenmeyer 250mL-Side.svg
new file mode 100644
index 00000000..943c1aff
--- /dev/null
+++ b/media/objects/Glassware/Erlenmeyer 250mL-Side.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Erlenmeyer 250mL-Top.svg b/media/objects/Glassware/Erlenmeyer 250mL-Top.svg
new file mode 100644
index 00000000..23be2fc0
--- /dev/null
+++ b/media/objects/Glassware/Erlenmeyer 250mL-Top.svg
@@ -0,0 +1,64 @@
+
+
diff --git a/media/objects/Glassware/Erlenmeyer 50mL-Front.svg b/media/objects/Glassware/Erlenmeyer 50mL-Front.svg
new file mode 100644
index 00000000..8d3e8be7
--- /dev/null
+++ b/media/objects/Glassware/Erlenmeyer 50mL-Front.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Erlenmeyer 50mL-Side.svg b/media/objects/Glassware/Erlenmeyer 50mL-Side.svg
new file mode 100644
index 00000000..8d3e8be7
--- /dev/null
+++ b/media/objects/Glassware/Erlenmeyer 50mL-Side.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Erlenmeyer 50mL-Top.svg b/media/objects/Glassware/Erlenmeyer 50mL-Top.svg
new file mode 100644
index 00000000..5b78a151
--- /dev/null
+++ b/media/objects/Glassware/Erlenmeyer 50mL-Top.svg
@@ -0,0 +1,64 @@
+
+
diff --git a/media/objects/Glassware/Florence 250mL-Front.svg b/media/objects/Glassware/Florence 250mL-Front.svg
new file mode 100644
index 00000000..a94f433e
--- /dev/null
+++ b/media/objects/Glassware/Florence 250mL-Front.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Florence 250mL-Side.svg b/media/objects/Glassware/Florence 250mL-Side.svg
new file mode 100644
index 00000000..8fbd7ecc
--- /dev/null
+++ b/media/objects/Glassware/Florence 250mL-Side.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Florence 250mL-Top.svg b/media/objects/Glassware/Florence 250mL-Top.svg
new file mode 100644
index 00000000..0b503919
--- /dev/null
+++ b/media/objects/Glassware/Florence 250mL-Top.svg
@@ -0,0 +1,64 @@
+
+
diff --git a/media/objects/Glassware/Petri Dish 100mm-Front.svg b/media/objects/Glassware/Petri Dish 100mm-Front.svg
new file mode 100644
index 00000000..19243846
--- /dev/null
+++ b/media/objects/Glassware/Petri Dish 100mm-Front.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Petri Dish 100mm-Side.svg b/media/objects/Glassware/Petri Dish 100mm-Side.svg
new file mode 100644
index 00000000..99db8b98
--- /dev/null
+++ b/media/objects/Glassware/Petri Dish 100mm-Side.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Petri Dish 100mm-Top.svg b/media/objects/Glassware/Petri Dish 100mm-Top.svg
new file mode 100644
index 00000000..c657a655
--- /dev/null
+++ b/media/objects/Glassware/Petri Dish 100mm-Top.svg
@@ -0,0 +1,58 @@
+
+
diff --git a/media/objects/Glassware/Petri Dish 60mm-Front.svg b/media/objects/Glassware/Petri Dish 60mm-Front.svg
new file mode 100644
index 00000000..15c3c249
--- /dev/null
+++ b/media/objects/Glassware/Petri Dish 60mm-Front.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Petri Dish 60mm-Side.svg b/media/objects/Glassware/Petri Dish 60mm-Side.svg
new file mode 100644
index 00000000..15c3c249
--- /dev/null
+++ b/media/objects/Glassware/Petri Dish 60mm-Side.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Petri Dish 60mm-Top.svg b/media/objects/Glassware/Petri Dish 60mm-Top.svg
new file mode 100644
index 00000000..457bd8fb
--- /dev/null
+++ b/media/objects/Glassware/Petri Dish 60mm-Top.svg
@@ -0,0 +1,58 @@
+
+
diff --git a/media/objects/Glassware/Watch Glass-Front.svg b/media/objects/Glassware/Watch Glass-Front.svg
new file mode 100644
index 00000000..5af875bf
--- /dev/null
+++ b/media/objects/Glassware/Watch Glass-Front.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Watch Glass-Side.svg b/media/objects/Glassware/Watch Glass-Side.svg
new file mode 100644
index 00000000..5af875bf
--- /dev/null
+++ b/media/objects/Glassware/Watch Glass-Side.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/media/objects/Glassware/Watch Glass-Top.svg b/media/objects/Glassware/Watch Glass-Top.svg
new file mode 100644
index 00000000..941e7215
--- /dev/null
+++ b/media/objects/Glassware/Watch Glass-Top.svg
@@ -0,0 +1,52 @@
+
+
diff --git a/presets/characters.js b/presets/characters.js
index 170c432f..84e29a76 100644
--- a/presets/characters.js
+++ b/presets/characters.js
@@ -7686,13 +7686,23 @@ characterMakers.push(() => makeCharacter(
{ name: "Amanda", species: ["mouse"], tags: ["anthro"] },
{
front: {
- height: math.unit(6, "feet"),
- weight: math.unit(140, "lbs"),
+ height: math.unit(5, "inches"),
name: "Front",
image: {
- source: "./media/characters/amanda/front.svg"
+ source: "./media/characters/amanda/front.svg",
+ extra: 926/791,
+ bottom: 38/964
}
- }
+ },
+ back: {
+ height: math.unit(5, "inches"),
+ name: "Back",
+ image: {
+ source: "./media/characters/amanda/back.svg",
+ extra: 909/805,
+ bottom: 43/952
+ }
+ },
},
[
{
diff --git a/presets/objects.js b/presets/objects.js
index 12202b1b..63beb9ef 100644
--- a/presets/objects.js
+++ b/presets/objects.js
@@ -854,5 +854,8 @@ function makeObjects() {
results.push(makeModel({"name": "Dice", "kind": "objects", "forms": [{"name": "D6 Dotted", "views": [{"name": "Front", "height": 0.01415012776851654}, {"name": "Side", "height": 0.01415012776851654}, {"name": "Top", "height": 0.01415012776851654}]}, {"name": "D4", "views": [{"name": "Front", "height": 0.01699800044298172}, {"name": "Side", "height": 0.01699800044298172}, {"name": "Top", "height": 0.017878876999020576}]}, {"name": "D8", "views": [{"name": "Front", "height": 0.013862096704542637}, {"name": "Side", "height": 0.013862096704542637}, {"name": "Top", "height": 0.01808309182524681}]}, {"name": "D10", "views": [{"name": "Front", "height": 0.015351179987192154}, {"name": "Side", "height": 0.015351179987192154}, {"name": "Top", "height": 0.016876159235835075}]}, {"name": "D10 Percentile", "views": [{"name": "Front", "height": 0.015358946286141872}, {"name": "Side", "height": 0.015358946286141872}, {"name": "Top", "height": 0.016862813383340836}]}, {"name": "D12", "views": [{"name": "Front", "height": 0.017607660964131355}, {"name": "Side", "height": 0.017607660964131355}, {"name": "Top", "height": 0.02110980451107025}]}, {"name": "D20", "views": [{"name": "Front", "height": 0.01964765228331089}, {"name": "Side", "height": 0.01964765228331089}, {"name": "Top", "height": 0.023235414177179337}]}, {"name": "D6 Numbered", "views": [{"name": "Front", "height": 0.014152487739920616}, {"name": "Side", "height": 0.014152487739920616}, {"name": "Top", "height": 0.014152484014630318}]}]}))
results.push(makeModel({"name": "Kitchenware", "kind": "objects", "forms": [{"name": "Fork", "views": [{"name": "Front", "height": 0.2818719744682312}, {"name": "Side", "height": 0.2818719744682312}, {"name": "Top", "height": 0.016759976744651794}]}, {"name": "Knife", "views": [{"name": "Front", "height": 0.3395436704158783}, {"name": "Side", "height": 0.3395436704158783}, {"name": "Top", "height": 0.010758467018604279}]}, {"name": "Spoon", "views": [{"name": "Front", "height": 0.2750821113586426}, {"name": "Side", "height": 0.2750821113586426}, {"name": "Top", "height": 0.019756551831960678}]}, {"name": "Wine Bottle", "views": [{"name": "Front", "height": 0.5660512447357178}, {"name": "Side", "height": 0.5660512447357178}, {"name": "Top", "height": 0.15603119134902954}]}, {"name": "Wooden Spoon", "views": [{"name": "Front", "height": 0.6168732643127441}, {"name": "Side", "height": 0.6168732643127441}, {"name": "Top", "height": 0.0339566171169281}]}, {"name": "Cutting Board", "views": [{"name": "Front", "height": 0.021497011184692383}, {"name": "Side", "height": 0.021497011184692383}, {"name": "Top", "height": 0.7172588109970093}]}, {"name": "Plate", "views": [{"name": "Front", "height": 0.05160319805145264}, {"name": "Side", "height": 0.05160319805145264}, {"name": "Top", "height": 0.40615978837013245}]}, {"name": "Bowl", "views": [{"name": "Front", "height": 0.1036841869354248}, {"name": "Side", "height": 0.1036841869354248}, {"name": "Top", "height": 0.24168895184993744}]}, {"name": "Coffee Cup", "views": [{"name": "Front", "height": 0.12534868717193604}, {"name": "Side", "height": 0.12534868717193604}, {"name": "Top", "height": 0.11728732287883759}]}, {"name": "Tea Cup", "views": [{"name": "Front", "height": 0.08793330192565918}, {"name": "Side", "height": 0.08793330192565918}, {"name": "Top", "height": 0.10884171724319458}]}]}))
results.push(makeModel({"name": "Condoms", "kind": "objects", "forms": [{"name": "Narrow", "views": [{"name": "Front", "height": 0.196}]}, {"name": "Standard", "views": [{"name": "Front", "height": 0.208}]}, {"name": "Large", "views": [{"name": "Front", "height": 0.221}]}, {"name": "XL", "views": [{"name": "Front", "height": 0.229}]}]}))
+
+ /* ***Glassware*** */ results.push(makeModel({"name": "Glassware", "kind": "objects", "forms": [{"name": "Erlenmeyer 250mL", "views": [{"name": "Front", "height": 0.13200001418590546}, {"name": "Side", "height": 0.13200001418590546}, {"name": "Top", "height": 0.0820000022649765}]}, {"name": "Erlenmeyer 50mL", "views": [{"name": "Front", "height": 0.07800000160932541}, {"name": "Side", "height": 0.07800000160932541}, {"name": "Top", "height": 0.050999999046325684}]}, {"name": "Florence 250mL", "views": [{"name": "Front", "height": 0.1444360464811325}, {"name": "Side", "height": 0.1444360464811325}, {"name": "Top", "height": 0.08079908788204193}]}, {"name": "Watch Glass", "views": [{"name": "Front", "height": 0.012000001035630703}, {"name": "Side", "height": 0.012000001035630703}, {"name": "Top", "height": 0.1213480606675148}]}, {"name": "Petri Dish 60mm", "views": [{"name": "Front", "height": 0.012477035634219646}, {"name": "Side", "height": 0.012477035634219646}, {"name": "Top", "height": 0.06493081152439117}]}, {"name": "Petri Dish 100mm", "views": [{"name": "Front", "height": 0.014974183402955532}, {"name": "Side", "height": 0.014974183402955532}, {"name": "Top", "height": 0.10384059697389603}]}]}));
+ /* ***INSERT HERE*** */
return results;
}
diff --git a/scripts/blender-model.py b/scripts/blender-model.py
index 13913b9f..45a4bd77 100644
--- a/scripts/blender-model.py
+++ b/scripts/blender-model.py
@@ -5,7 +5,7 @@ import json
import os
import pathlib
-GROUP_NAME = "Test"
+GROUP_NAME = "Glassware"
GROUP_KIND = "objects"
path_info = pathlib.Path(bpy.data.filepath).parent.joinpath("macrovision-directory.txt")
@@ -26,10 +26,10 @@ bpy.data.scenes["Scene"].render.film_transparent = True
bpy.data.scenes["Scene"].view_settings.view_transform = "Raw"
bpy.data.worlds["World"].node_tree.nodes["Background"].inputs[1].default_value = 0
-a
+
objects = []
for object in bpy.data.collections["Macrovision"].objects:
- if object.type == "MESH":
+ if object.type == "MESH" or object.type == "CURVE":
objects.append(object)
all_data = {}
diff --git a/scripts/process-model.py b/scripts/process-model.py
index 5c6071a3..1a4491df 100644
--- a/scripts/process-model.py
+++ b/scripts/process-model.py
@@ -60,7 +60,7 @@ for data in all_data["forms"]:
print(result)
if os.path.exists(result) and os.path.getmtime(input) < os.path.getmtime(result):
print("Skipping ", input)
- # continue
+ continue
input_base = sourcedir.joinpath(name + "-" + view_name + "-base.bmp")
input_highlight = sourcedir.joinpath(name + "-" + view_name + "-highlight.bmp")
@@ -79,4 +79,23 @@ for data in all_data["forms"]:
subprocess.run([POTRACE, input_vivid, "-b", "svg", "-C", "#333333", "-o", output_vivid], shell=True)
combine(output_base, output_highlight, output_vivid, result)
# os.unlink(input_base)
- # os.unlink(input_highlight)
\ No newline at end of file
+ # os.unlink(input_highlight)
+
+# now we add the data
+
+file_path = macrodir.joinpath("presets").joinpath(category + ".js")
+
+with open(file_path, "r", encoding="utf-8") as file:
+ lines = file.readlines()
+
+found = False
+with open(file_path, "w", encoding="utf-8") as file:
+ for line in lines:
+ if f"/* ***{group_name}*** */" in line:
+ found = True
+ file.write(f" /* ***{group_name}*** */ results.push(makeModel({json.dumps(all_data)}));\n")
+ elif "/* ***INSERT HERE*** */" in line and not found:
+ file.write(f" /* ***{group_name}*** */ results.push(makeModel({json.dumps(all_data)}));\n")
+ file.write(line)
+ else:
+ file.write(line)