es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Exportar puntos 3D a Blender mediante el formato .ply crea un objeto vacío, mientras que funciona en MeshLab.

He creado un script de Python para crear un archivo .ply utilizando la imagen y la nube de puntos de un escaneo 3D, almacenados como una matriz NumPy.

Puedo abrir el archivo resultante.ply en MeshLab. Funciona bien.

Pero cuando lo importo en Blender, no hay ningún punto. El objeto resultante está vacío.

¿Tienes alguna idea de cómo solucionar eso?

Gracias

def row<em>col</em>xyz<em>a</em>ply(self, xyz, rgb, name="output"):
    """Convierte una nube de puntos de numpy (fila, columna, xyz) a formato ply"""

    # reshape
    # Extrae las coordenadas de los puntos donde hay valores reales (no NaN) en la nube de puntos xyz
    points_rows, points_cols = np.where(~np.isnan(xyz[:,:,0]))

    # Obtén los puntos correspondientes en la nube de puntos xyz en un array
    points_xyz = xyz[points_rows,points_cols,:] # array de n*3 de puntos 3D (después del filtrado NaN)

    # Obtén los puntos correspondientes en la imagen en un array
    points_image = rgb[points_rows,points_cols,0:3] # array de n*3 de puntos RGB (después del filtrado NaN)

    # Crea un diccionario de datos
    data = {
        'x':     points_xyz[:,0],
        'y':     points_xyz[:,1],
        'z':     points_xyz[:,2], 
        'red':   points_image[:,0],
        'green': points_image[:,1],
        'blue':  points_image[:,2]
    }

    # Conviértelo en una nube de puntos
    cloud = PyntCloud(pd.DataFrame(data=data))

    # Ruta donde guardarlo
    nombre_archivo = f"{nombre}.ply"
    ruta = os.path.join(self.ruta_exportaciones, nombre_archivo)

    # Guárdalo
    cloud.to_file(ruta)

    # Depuración
    print("row_col_xyz_a_ply > guardado:", nombre_archivo)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible que cuando se importa el archivo .ply en Blender, el tamaño de los puntos sea demasiado pequeño para ser visible. Intente hacer zoom en el objeto o aumente el tamaño de los puntos en Blender utilizando el modo de edición de partículas.

    Otra solución podría ser convertir el archivo .ply a otro formato compatible con Blender, como .obj o .fbx, utilizando MeshLab u otra herramienta de conversión.

    También es importante tener en cuenta que Blender puede manejar los valores RGB de manera diferente a MeshLab, por lo que es posible que los colores no aparezcan iguales en Blender como lo hacen en MeshLab.

Comments are closed.