Los árboles de manzanas se generan utilizando la api de Blender para Python, en el script apple_gen.py
.
Para ejecutar el script es necesario instalar Blender en su versión 3.3.
comando: blender apple_tree.blend [--background] --python apple_gen.py -- --model_dir {dest_dir} -f {configuration_file} [-s seed] --model [--metadata] [--video]
argumentos:
--background Ejecuta blender en segundo plano.
-o, --model-dir Directorio de destino de los archivos. Por
defecto: `/generated/test_apple`
-f, --file Archivo de parámetros del arbol.
-s, --seed Seed para numpy.
--model Exporta el modelo en formato .dae.
--metadata Exporta un archivo .txt con la posición de
las hojas y manzanas.
--video Exporta un video que muestra una vista de 360°
del árbol.
Es un archivo en formato JSON que determina los parámetros que definen al árbol. Un ejemplo de este archivo es el siguiente:
{
"main": {
"elements_offset_range": [0.5, 0.6],
"height_range": [2.2, 2.3]
},
"branches": {
"count": 1,
"radius_range": [0.05, 0.07],
"radius_decrease": 0.2,
"brindillas": {
"offset_range": [0.5, 0.6],
"length_range": [0.2, 1.0],
"distance_between": [0.02, 0.03],
"radius_range": [0.006, 0.01],
"radius_decrease": 0.2
}
},
"fruits": {
"count_proportion": 0.2,
"size_range": [0.065, 0.07]
},
"leaves": {
"count_proportion": 0.2,
"size_range": [0.1, 0.15]
}
}
Nota Los parámetros de tipo rango corresponden al intervalo en el cual se puede tomar el valor del parámetro de forma aleatoria.
Propiedades que definen al árbol.
Nombre | Tipo | Descripción |
---|---|---|
elements_offset_range | Rango | Altura mínima a partir de la cual puede haber ramas, hojas o frutas. |
height_range | Rango | Altura máxima del árbol. |
Propiedades que describen las ramas del árbol.
Nombre | Tipo | Descripción |
---|---|---|
count | Número | Cantidad de ramas principales. |
radius_range | Rango | Grosor de la rama |
radius_decrease | Número | Factor de reducción del grosor de la rama hacia el extremo. |
brindillas | JSON | Parámetros correspondientes a las ramas secundarias. Que contienen las manzanas y hojas. |
>offset_range | Rango | Distancia desde el inicio de la rama principal a partir de la cual pueden haber ramas secundarias. |
>length_range | Rango | Largo de las ramas secundarias |
>distance_between | Rango | Distancia entre las ramas secundarias. |
>radius_range | Rango | Grosor de las ramas secundarias. |
>radius_decrease | Rango | Factor de reducción del grosor de las ramas secundarias. |
Nombre | Tipo | Descripción |
---|---|---|
count_proportion | Número | Probabilidad de agregar una fruta en un nodo. Rango: [0,1] |
size_range | Rango | Tamaño de la fruta. |
La textura de la manzana se elige de forma aleatoria entre cuatro imágenes precargadas. Un ejemplo de manzana es el siguiente:
Nombre | Tipo | Descripción |
---|---|---|
count_proportion | Número | Probabilidad de agregar una hoja en un nodo. Rango: [0,1] |
size_range | Rango | Tamaño de la hoja. |
Un ejemplo de hoja es el siguiente: