Generates 2D and 3D Signed Distance Field samples based on the paper "Primitive3D: 3D Object Dataset Synthesis from Randomly Assembled Primitives". We extend the idea to the SDF world resulting into a simple library that might open/simplify new ML explorations.
git clone https://github.com/kecol/SDF-Sampler.git
pip install -e .
import numpy as np
from sdf_sampler.sampler import SDF_2DSampler
# create sampler with default primitives and operations
tree_depth = 10
sampler = SDF_2DSampler(N=tree_depth)
# generate random sdf sample
sample = sampler()
# display sample composition (sdf primitives and operations used)
print(sample.root)
# define space's coordinates we are courious about in range (-1,-1) to (1, 1)
n_points = 100
points = (np.random.rand(n_points, 2)-.5)*2
# query sdf values for defined points
sdf_values = sample().f(points)
import numpy as np
from sdf_sampler.sampler import SDF_3DSampler
# create sampler with default primitives and operations
tree_depth = 6
sampler = SDF_3DSampler(N=tree_depth)
# generate random sdf sample
sample = sampler()
# display sample composition (sdf primitives and operations used)
print(sample.root)
# define space's coordinates we are courious about in range (-1,-1,-1) to (1, 1, 1)
n_points = 100
points = (np.random.rand(n_points, 3)-.5)*2
# query sdf values for defined points
sdf_values = sample().f(points)
Implement rotations, translation and scaling in 2D (sampler.sample_primitive)- Add more primitives (primitives.primitives_2D)
- Add more operations (operations.operations_2D)
Replicate the whole sampling idea for 3DAdd alternative 3D plots (utils)Add more primitives (primitives.primitives_3D)- Add more operations (operations.operations_3D)
- Simplify video generation for 3D
- Add animated/video 3D slice exploration
Add STL plotting: simply install k3d for this task