procfunc 0.30.0__tar.gz → 0.30.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {procfunc-0.30.0/src/procfunc.egg-info → procfunc-0.30.2}/PKG-INFO +4 -4
- {procfunc-0.30.0 → procfunc-0.30.2}/README.md +2 -2
- {procfunc-0.30.0 → procfunc-0.30.2}/pyproject.toml +3 -3
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/__init__.py +1 -1
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/execute/construct_special_cases.py +8 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/execute/util.py +1 -1
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transpiler/bpy_to_computegraph.py +6 -2
- {procfunc-0.30.0 → procfunc-0.30.2/src/procfunc.egg-info}/PKG-INFO +4 -4
- {procfunc-0.30.0 → procfunc-0.30.2}/LICENSE.md +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/setup.cfg +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/color.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/compute_graph/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/compute_graph/compute_graph.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/compute_graph/node.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/compute_graph/operators_info.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/compute_graph/proxy.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/compute_graph/util.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/context.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/control.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/bindings_util.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/bpy_node_info.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/compositor.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/execute/construct_nodes.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/execute/execute.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/execute/infer_runtime_data_type.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/func.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/geo.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/manifest.json +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/math.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/node_function.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/shader.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/nodes/types.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/_util.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/addons.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/attr.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/collection.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/curve.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/file.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/manifest.json +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/mesh.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/modifier.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/object.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/primitives/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/primitives/camera.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/primitives/curve.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/primitives/light.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/primitives/mesh.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/ops/uv.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/random.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/tracer/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/tracer/decorator.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/tracer/patch.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/tracer/proxy.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/tracer/trace.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/cleanup.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/convert.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/distribution.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/extract_materials.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/infer_distribution.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/parameters.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transforms/util.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transpiler/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transpiler/codegen.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transpiler/identifiers.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/transpiler/main.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/types.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/__init__.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/bpy_info.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/camera.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/keyframe.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/log.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/manifest.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/pytree.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc/util/teardown.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc.egg-info/SOURCES.txt +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc.egg-info/dependency_links.txt +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc.egg-info/requires.txt +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/src/procfunc.egg-info/top_level.txt +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/tests/test_asset.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/tests/test_compute_graph.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/tests/test_dedup_names.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/tests/test_ops.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/tests/test_pytree.py +0 -0
- {procfunc-0.30.0 → procfunc-0.30.2}/tests/test_trace.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: procfunc
|
|
3
|
-
Version: 0.30.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.30.2
|
|
4
|
+
Summary: Function-Oriented Abstractions for Procedural 3D Generation in Python
|
|
5
5
|
License-Expression: BSD-3-Clause
|
|
6
6
|
Project-URL: Homepage, https://github.com/princeton-vl/procfunc
|
|
7
7
|
Project-URL: Repository, https://github.com/princeton-vl/procfunc
|
|
@@ -24,8 +24,8 @@ Dynamic: license-file
|
|
|
24
24
|
# ProcFunc: Function-Oriented Abstractions for Procedural 3D Generation in Python
|
|
25
25
|
|
|
26
26
|
[**Documentation**](#documentation)
|
|
27
|
-
| [**Research Paper**](
|
|
28
|
-
| [**Documentation**](
|
|
27
|
+
| [**Research Paper**](https://arxiv.org/abs/2604.26943)
|
|
28
|
+
| [**Documentation**](https://procfunc.readthedocs.io)
|
|
29
29
|
| [**Transpiling**](#transpile-a-blender-file-to-procfunc-code)
|
|
30
30
|
| [**Experiments**](#experiments)
|
|
31
31
|
| [**Contributing**](#contributing)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# ProcFunc: Function-Oriented Abstractions for Procedural 3D Generation in Python
|
|
2
2
|
|
|
3
3
|
[**Documentation**](#documentation)
|
|
4
|
-
| [**Research Paper**](
|
|
5
|
-
| [**Documentation**](
|
|
4
|
+
| [**Research Paper**](https://arxiv.org/abs/2604.26943)
|
|
5
|
+
| [**Documentation**](https://procfunc.readthedocs.io)
|
|
6
6
|
| [**Transpiling**](#transpile-a-blender-file-to-procfunc-code)
|
|
7
7
|
| [**Experiments**](#experiments)
|
|
8
8
|
| [**Contributing**](#contributing)
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "procfunc"
|
|
7
|
-
version = "0.30.
|
|
8
|
-
description = "
|
|
7
|
+
version = "0.30.2"
|
|
8
|
+
description = "Function-Oriented Abstractions for Procedural 3D Generation in Python"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "BSD-3-Clause"
|
|
11
11
|
requires-python = ">=3.11"
|
|
@@ -35,7 +35,7 @@ docs = [
|
|
|
35
35
|
where = ["src"]
|
|
36
36
|
|
|
37
37
|
[tool.setuptools.package-data]
|
|
38
|
-
procfunc = ["
|
|
38
|
+
procfunc = ["nodes/manifest.json", "ops/manifest.json"]
|
|
39
39
|
|
|
40
40
|
[tool.pytest.ini_options]
|
|
41
41
|
testpaths = "tests"
|
|
@@ -69,6 +69,10 @@ def special_case_float_curve(
|
|
|
69
69
|
if i < len(curve.points):
|
|
70
70
|
curve.points[i].location = (x, y)
|
|
71
71
|
|
|
72
|
+
# Without update(), Blender keeps the default identity LUT and ignores
|
|
73
|
+
# the points we just assigned during geo/shader node evaluation.
|
|
74
|
+
bl_node.mapping.update()
|
|
75
|
+
|
|
72
76
|
|
|
73
77
|
def special_case_rgb_curves(
|
|
74
78
|
bl_node: bpy.types.Node,
|
|
@@ -88,6 +92,8 @@ def special_case_rgb_curves(
|
|
|
88
92
|
for i, (x, y) in enumerate(curve_np):
|
|
89
93
|
bl_curve.points[i].location = (x, y)
|
|
90
94
|
|
|
95
|
+
bl_node.mapping.update()
|
|
96
|
+
|
|
91
97
|
|
|
92
98
|
def special_case_vector_curves(
|
|
93
99
|
bl_node: bpy.types.Node,
|
|
@@ -107,6 +113,8 @@ def special_case_vector_curves(
|
|
|
107
113
|
for i, (x, y) in enumerate(curve_np):
|
|
108
114
|
bl_curve.points[i].location = (x, y)
|
|
109
115
|
|
|
116
|
+
bl_node.mapping.update()
|
|
117
|
+
|
|
110
118
|
|
|
111
119
|
def special_case_file_output(
|
|
112
120
|
bl_node: bpy.types.Node,
|
|
@@ -236,7 +236,7 @@ def assign_default_value(
|
|
|
236
236
|
| bni.NodeDataType.MATERIAL
|
|
237
237
|
| bni.NodeDataType.COLLECTION
|
|
238
238
|
):
|
|
239
|
-
if isinstance(input_val, (t.
|
|
239
|
+
if isinstance(input_val, (t.Object, t.Material, t.Collection)):
|
|
240
240
|
target_socket.default_value = input_val.item()
|
|
241
241
|
else:
|
|
242
242
|
target_socket.default_value = input_val
|
|
@@ -1124,9 +1124,13 @@ def parse_geo_modifier(
|
|
|
1124
1124
|
if soc.in_out != "INPUT":
|
|
1125
1125
|
continue
|
|
1126
1126
|
if soc.identifier not in id_to_node:
|
|
1127
|
-
|
|
1128
|
-
|
|
1127
|
+
# Interface declares this input but nothing inside the nodetree reads it
|
|
1128
|
+
# (e.g. NodeGroupInput's Geometry output is unlinked). Skip — the subgraph
|
|
1129
|
+
# has no placeholder for it, so passing a kwarg would be a type error.
|
|
1130
|
+
logger.debug(
|
|
1131
|
+
f"Skipping unused modifier input {soc.name=} {soc.identifier=}"
|
|
1129
1132
|
)
|
|
1133
|
+
continue
|
|
1130
1134
|
parsed_name = id_to_node[soc.identifier].metadata.get("varname", None)
|
|
1131
1135
|
assert parsed_name is not None, id_to_node[soc.identifier]
|
|
1132
1136
|
inputs[parsed_name] = _parse_geomod_input(mod, name, node_curr, memo)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: procfunc
|
|
3
|
-
Version: 0.30.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.30.2
|
|
4
|
+
Summary: Function-Oriented Abstractions for Procedural 3D Generation in Python
|
|
5
5
|
License-Expression: BSD-3-Clause
|
|
6
6
|
Project-URL: Homepage, https://github.com/princeton-vl/procfunc
|
|
7
7
|
Project-URL: Repository, https://github.com/princeton-vl/procfunc
|
|
@@ -24,8 +24,8 @@ Dynamic: license-file
|
|
|
24
24
|
# ProcFunc: Function-Oriented Abstractions for Procedural 3D Generation in Python
|
|
25
25
|
|
|
26
26
|
[**Documentation**](#documentation)
|
|
27
|
-
| [**Research Paper**](
|
|
28
|
-
| [**Documentation**](
|
|
27
|
+
| [**Research Paper**](https://arxiv.org/abs/2604.26943)
|
|
28
|
+
| [**Documentation**](https://procfunc.readthedocs.io)
|
|
29
29
|
| [**Transpiling**](#transpile-a-blender-file-to-procfunc-code)
|
|
30
30
|
| [**Experiments**](#experiments)
|
|
31
31
|
| [**Contributing**](#contributing)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|