This project generates fractal tree and puts primitives on it. Inspired by Catlike Coding Unity C# Tutorials.
The aim is to generate 3d training data from scratch, to increase performance in 3D deep learning, such as point cloud registration or feature matching.
Although no significant performance improvement has been found by training such networks by ONLY using this dataset, mixing this data with other existing data such as ModelNet and ABC will help to gain performance.
Example neural network to use this: RPMNet, PointNetLK, DCP
This repository contains two steps.
- Generating primitive based fractals into
.fbx
format (Unity)- Depends on FbxExporter
- Used Free Primitives
- Applying boolean operation to generated
.fbx
ensure watertight (one membrane, no holes, no meshes inside meshes) 3d mesh, saving as.obj
. (Blender)- Depends on booltron
Tested with Windows 10
with Unity 2020.3.3f1
.
This project saves .fbx
file, and processes them into watertight meshes using blender (blender part to be added)
- clone the repository and open up using UnityHub
- open up the
GeneratroScene
scene - start the scene, select
FractalGenerator
Object, and hitCreate
- hit again, and different fractal will pop up
- clone the repository and open up with Unity
- open up the
GeneratroScene
scene - Inside
FractalRecorder
Object, editFractalGenerateAndSave
scripts' path to save and numver to save.
NOTE : If you run deeper fractal tree generation, time to save also needs to be tuned longer.
- You can edit
FractalObject.prefab
inAssets/Resources
to change generation behavior- You also can add / remove / change Meshes to use for generating fractal primitives
- Note that if you make depth deeper, increase
wait_time
inFracatlGenerateAndSave
, since it'll take while to generate complete fractal tree and put primitives in.
Tested with Blender 2.9.1
.
- install booltron into your Blender
- Open Blender, delete all the detault objects
- Go to
Scripting
tab, open python scriptautomatic_boolean_operation.py
will simply apply union operationautomatic_boolean_operation_various.py
will randomly apply union / difference / intersect operation
- Set correct path
- Execute it (Alt+P)
NOTE : You can try applying automatic_disp_noise.py
afterwards, to add some noise to the models as well. You can try adding subdivision beforehand / try sulpting tool instead for further randomization.
Before (left) and After (right) the boolean union operation
MIT License