G60 G60
Páginas: 1 2 3 [4]   Ir Abajo
  Imprimir  
Autor Tema: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d  (Leído 71859 veces)
0 Usuarios y 1 Visitante están viendo este tema.
04 Noviembre, 2013, 17:08:48 #45
grrr05
Superusuario
*******
Desconectado Desconectado

Mensajes: 4361


If it ain't broke don't fix it


WWW
En línea
Re: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d

Espectacular... sólo falta Franciscus y la plaza un poco abarrotá Cheesy

Bueno a lo que íbamos, este finde he estado desaparecido y no he avanzado nada, pero hoy me ha dado por probar el Gmaps con la opción de descargar los modelos de warehouse para crear escenarios. No puedo decir nada aún puesto que estoy procesando un área relativamente pequeña en la que hay 52 objetos, pero la cosa va para largo. Si esta noche termina ya comentaré los resultados y con capturas.

Esto me ha inducido a un alto en el camino, puesto que no hay ningún problema con ejecutarlo bajo windows (desde le terminal cygwin) y esta es la única plataforma que uso.

Ahora me sabe mal por todo el esfuerzo y dolores de cabeza invertidos en esto, pero mirado desde un punto de vista objetivo, estamos reinventando la rueda.

Si es necesario, no tengo ningún problema para escribir una miniguia para hacer funcionar el gmaps bajo windows, sólo hay que descargarse el cygwin y habilitar las librerías necesarias que són bc, unzip, imagemagick, wget y openssh (creo recordar que cuando instalé cygwin hace ya tiempo lo hice con las opciones por defecto y todas estas librerías están).
Con esto instalado sólo hay que ejectuar el gmaps desde la consola con los parámetros correspondientes al área a procesar (definida en un kml desde google earth) y la carpeta destino para el escenario, mas la opcion "-bonly" para que descargue y procese los modelos de 3dwarehouse.

Viendo el funcionamiento del gmaps, procesa los modelos del mismo modo que la idea original, separando los objetos según texturas, pero sin dependencias externas (como sketchup, gimp, etc...), el gmaps lo hace todo el solito. El único soft necesario es la terminal cygwin, ni sketchup, ni gimp, ni xnv, ni ultraedit (o np++), etc...

Nada mas. Game Over.

¿Que opinas Alberto?




« Última modificación: 04 Noviembre, 2013, 17:40:30 por grrr05 »




Albert Ràfols
www.spainuhd.es
04 Noviembre, 2013, 21:52:57 #46
AlbertoDur
Usuario Ocasional
***
Desconectado Desconectado

Mensajes: 151



En línea
Re: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d


Mastodóntica idea!. Eso sería el rien ne va plus en materia de escenarios!. Simplemente no haría falta nada más en el simulador en cuanto a escenarios se refiere.

No obstante no puedo evitar que me abrume al principio, ya que también es mastodóntico el volumen de datos e información a procesar y a manejar. Habría que ver ratios de zoom y las consecuentes implicaciones en espacio, memorias y frames.

Ni que decir tiene que el simple hecho de asomarse a esos abismos ya merece la pena. Aunque no sepas qué te espera en el fondo. Eso es lo principal. No dejes de tenernos puntualmente informados de esa escalada al Nirvana.

De todas formas me gustaría ultimar un poco más el proyecto que traíamos entre manos. Y necesito que me eches un pequeño cable.

El problema de la importación de texturas a procesar lo he solucionado con el siguiente script en Batch:

@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR /f %%a IN ('dir /b') DO (
   CALL SET /a x = !x! +1
   if !x! == 1 (
      REM Instrucciones Basílica SaintPeter
      DEL d:\downloads_x-plane_downloads\SAINTPETER_04\SAINTPETER_04\*.* /Q
           MOVE %%a d:\downloads_x-plane_downloads\SAINTPETER_04\SAINTPETER_04\
   CALL ECHO se ha movido %%a
   )
)

(Tengo que perfeccionarlo un poco para que opere desde el directorio destino para no tener que tocar código con cada escenario). Convertido a EXE e implantado en la barra de tareas de windows me permite con una sola pulsación eliminar la textura procesada y colocarme en su lugar la siguiente textura a procesar sin tener que manipular directorios ni ficheros.

El problema de la exportación también solucionado gracias a una modificación de tu magnífico script WH2XPL al que suprimí la gestión de materiales dejando sólo la exportación de ficheros con el siguiente contenido:

require 'SU2XPlane.rb'

module Warehouse2XPlane

$numarchivo = 0
$primeraejecucion = true
   
   UI.menu("Plugins").add_item("EXPORTAME") do
         guardar_modelo
   end
   
   
   
# Asignación de nombre de archivo, exportación a OBJ de X-Plane
   
   def self.guardar_modelo
      
      # Genera el nombre del archivo
      nombrearchivo = 'obj_' + $numarchivo.to_s + '.skp'
      
      # Guardado y cargado del modelo para su exportación.
      model = Sketchup.active_model
      status = model.save(nombrearchivo)
      Sketchup.open_file(nombrearchivo)
      
      # Exportación a OBJ de X-Plane
      XPlaneExport()
      
      # Cada vez que se guarde el archivo se suma 1 al número del nombre del objeto exportado.
      $numarchivo = $numarchivo + 1
      

   end


#Explotar componentes y grupos

   def self.explotar
      model = Sketchup.active_model
      defs = model.definitions
      defs.each do |d|
         d.instances.each do |e|
            e.explode
         end
      end
   end
   
end


#Sketchup.send_action "showRubyPanel:"


Por tanto, solucionados los problemas de importación de texturas y exportación de objetos sólo nos queda el proceso manual del SU. Entonces, viendo las maravillas que hiciste con el anterior script ha pensado que quizá fuera más elemental y no te resultara muy tedioso terminarme el script con las siguientes elementales funciones de menú del SU antes de llegar a la exportación:

1º File -> New  (o Close o como sea a fin de limpiarnos el SU de la anterior textura procesada y que, de momento tengo que hacer con la barra de menús)

2º File-> Import (para instalar en SU la siguiente textura que ya nos tiene preparada el script Batch y que también tengo que ejecutar desde menús. No te preocupes por el error de missing textures)

3º HighLight Untextured (que ya viene implementado en SU8 y que también ejecuto desde menús)

4º Delete (o Erase o Cut o Purge untextured) para dejar el objeto listo para la exportación.

Si son instrucciones sin mayor complicación te agradecería mucho las implementaras en el plugin, lo cual dejaba el desarrollo de la idea casi finalizado y ya me encargaría yo de ensamblar ambos scripts (o al menos intentarlo) para dejar una casi ultimada herramienta de ejecución.

De todas formas, si es demasiado laborioso o complicado, no te preocupes, ya intentaremos algo...

Ya me comentas. Y, por favor, comenta el Nirvana, sea para bien o para mal...

We keep trying.


04 Noviembre, 2013, 22:59:08 #47
grrr05
Superusuario
*******
Desconectado Desconectado

Mensajes: 4361


If it ain't broke don't fix it


WWW
En línea
Re: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d

Si son instrucciones sin mayor complicación te agradecería mucho las implementaras en el plugin, lo cual dejaba el desarrollo de la idea casi finalizado y ya me encargaría yo de ensamblar ambos scripts (o al menos intentarlo) para dejar una casi ultimada herramienta de ejecución.
No deberían tener complicación alguna, ya que son funciones nativas de sketchup.

De todas maneras la idea de poder tratar los objetos individualmente también es atractiva, pues el gmaps se descarga todos los modelos geolocalizados que estén en el perímetro sí o sí.

Por lo pronto también se me ocurre que el batch llame al sketchup con los correspondientes argumentos para importar el modelo y correr el script.
Una vez terminada la exportación el mismo script podría cerrar el sketchup (acabo de mirar cómo) y repetir el proceso siguiendo el bucle del proceso de las texturas del batch.

Corriendo el batch con argumentos para especificar la ruta del modelo (que sería el directorio de trabajo), y que ejecute sketchup.exe  -Rubystartup "\Plugins\WH2XP.rb"  ["%path%"\model.dae] después de tratar cada textura.
Eso implicaría también decirle al batch dónde está instalado el sketchup (ya sea mediante una búsqueda automática o especificado como argumento), o hacer que el usuario lo incluya en el PATH.

Y si vamos mas lejos, incluso se podría llamar al imagemagick para tratar las texturas dentro del mismo bucle, el gmaps utiliza dicho soft para tratar las texturas así que se puede mirar dentro del código que funciones y parámetros utiliza.

Peroooo, he visto otra cosa muy interesante sobre el collada (y la manera de trabajar del gmaps). El archivo model.dae es texto plano, y dentro los meshes ya están separados por texturas, así que realmente lo que hace el sketchup es "arrejuntar" todos los meshes texturizados en un único modelo a la hora de importarlo - quizás sea un paso que nos podamos ahorrar, aunque desconozco como hace la exportación a obj. La verdad es que no he mirado nada del código del gmaps, pero ahí está, es un script de bash. Otra cosa que hace el gmaps es "transformar" los materiales que son colores planos en texturas, otra cosa de la que se encarga el imagemagick. Imagino que busca los valores RGB del material y el imagemagick "pinta" una textura nueva a partir de esos valores.

Si no lo has hecho ya descárgate el gmaps y échale un vistazo al código, se pueden sacar muchas ideas de esto, no es el mismo lenguaje pero se ven claramente las funciones y el flujo de trabajo del script.

Mañana me meto a ello Giñar

Por cierto, el gmaps aún sigue bajando y convirtiendo, sólo lleva 15 modelos procesados de los 52 (la Caterdral de Sta María de Tarragona está dando guerra), pero he probado el escenario pasándolo por el xgrinder y a pesar de lo poco que lleva hecho, los resultados son muy satisfactorios. La verdad es que es muy útil para hacer las cosas rápido (y cuando digo rápido me refiero a "con el mínimo esfuerzo..." porqué es lento de narices jeje)




Albert Ràfols
www.spainuhd.es
05 Noviembre, 2013, 13:56:10 #48
AlbertoDur
Usuario Ocasional
***
Desconectado Desconectado

Mensajes: 151



En línea
Re: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d

Por lo pronto también se me ocurre que el batch llame al sketchup con los correspondientes argumentos para importar el modelo y correr el script.
Una vez terminada la exportación el mismo script podría cerrar el sketchup (acabo de mirar cómo) y repetir el proceso siguiendo el bucle del proceso de las texturas del batch.

Corriendo el batch con argumentos para especificar la ruta del modelo (que sería el directorio de trabajo), y que ejecute sketchup.exe  -Rubystartup "\Plugins\WH2XP.rb"  ["%path%"\model.dae] después de tratar cada textura.
Eso implicaría también decirle al batch dónde está instalado el sketchup (ya sea mediante una búsqueda automática o especificado como argumento), o hacer que el usuario lo incluya en el PATH.



Exacto!. Esa es la idea. Parece que me lees el pensamiento.  Es el mismo método que utilicé en su dia para un tema de exclusiones en OSM y en otro tema de llenar el x-plane de objetos con sólo ejecutar un script mediante tratamiento masivo de los DSFs. Funcionaba bien, el único problema que tenía es que al llenar el x-plane en plan brute force, también aparecían objetos en el agua. Como X-plane sólo permite exclusiones en el agua a los forest por polígonos (o al menos así era cuando tenía entre manos esta cuestión) estuve un tiempo "e-mailando" con Ben y con Andreas Fabian (por cierto amabilísimo Andreas, no regateaba nada al dar explicaciones y consejos) a ver si me implementaban en el simulador una instrucción algo asi como "exclude_objects FROM WATER"  Cheesy pero no pudo ser, me dijo Ben, al menos, de momento.

Daba gusto ver como saltaba el UltraEdit y corrían las lineas de código y manipulación de los DSFs mientras te fumabas un cigarro. Puse algo por aquí respecto al tema OSM

http://www.x-plane.es/modules/smf/index.php?topic=2697.30

En fin, a lo que vamos:

Ya tengo terminado el script de batch. Ya se ejecuta desde el directorio destino sin más complicaciones y sin tener que tocar códiigo con cada modelo. A ver si podemos conseguir que no te dé muchas complicaciones la finalización del script de ruby en los términos que expusimos ayer y te lo paso para ver si conseguimos dar el impulso (de momento) final: el ensamblado de los dos plugins.

Otra cosa que he podido comprobar y creo que es importante: La totalidad de las texturas digamos "libres" se obtienen mediante una exportación a collada del fichero .skp. Es decir, en vez de descargarse el .zip con el modelo collada, hay que descargar el .skp y proceder a la exportación de texturas.

¿Qué tal va el proyecto mastodóntico?. Me gustaría que antes de verte zambullido totalmente en él, pudiéramos terminar el par de pasos que nos quedan para dejar ultimado este proyecto y dejarlo como recurso para el caso de que el otro, más interesante, no resultara viable por cualquier motivo.



05 Noviembre, 2013, 18:55:23 #49
grrr05
Superusuario
*******
Desconectado Desconectado

Mensajes: 4361


If it ain't broke don't fix it


WWW
En línea
Re: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d

Ok aquí tienes. Lo he hecho con un poco de prisas porque en un rato tengo que irme y hay algunos asuntos pendientes a arreglar.

-Completamente incapaz de importar el modelo... Mediante la instrucción de importación que se supone admite tanto .dae como .kmz me suelta un error de que el archivo es incorrecto... así que no está implementado. Raro porque desde la función "importar" del menú de SU, con el mismo archivo, ningún problema. Tampoco es posible importar desde línea de comandos, sólo admite archivos skp.

Tampoco se que diantres le pasa al Sketchup con el -RubyStartup, no hay forma de que arranque ningún plugin, cuando hace unos días lo hacía perfectamente ¿se habrá puesto en huelga? El único cambio respecto al SU que le he hecho al windows ha sido añadir la carpeta de SU al PATH, así que como no sea esto, ni idea de que puede estar pasando...

https://dl.dropboxusercontent.com/u/59143574/WH2XP_test.7z

Éste hace exactamente lo que me dijiste, salvo la importación claro... a ver si entre esta noche y mañana lo puedo mirar (esta semana voy un poco de culo)
Me da rabia lo de la importación ya que existe una variable que si le definimos el estado como falso no suelta ningún mensaje referente a la importación (por el tema de las texturas ausentes) pero ni idea de porqué no "lee" correctamente el model.dae...

Con el modelo importado hace la llamada al Highlight Untextured (me acabo de enterar que esto forma parte del SU2XPlane Cheesy) y oculta la selección, la exportación es igual que en el script anterior.

Dentro del bucle principal he añadido una instrucción para que cierre el SU al acabar el proceso por si quieres hacer pruebas con el batch, la instrucción está comentada y deshabilitada, sólo tienes que quitarle el primer "#".


Sobre el gmaps... aún sigue en ello, pero no te preocupes que no requiere zambullirse en absoluto Cheesy, sólo hay que ejecutar el comando y dejar que el ordenador vaya haciendo, lo único que hay que hacer cuando termine es volcar la carpeta resultante dentro de \Custom Scenery. Completamente automatizado (añadir las exclusiones ya es otra cosa, pero hasta que el gmaps no termine con la celda, le quedan días...) Además me he visto obligado a trasladar la producción a otro ordenador menos ruidoso y con menor gasto energético, necesita quedarse encendido 24/7 ya que quiero hacer las pruebas de rendimiento con celdas enteras, la actual cuenta sólo con 150 objetos, pero en la adyacente (Barcelona) los objetos se cuentan a miles.




Albert Ràfols
www.spainuhd.es
06 Noviembre, 2013, 11:31:00 #50
AlbertoDur
Usuario Ocasional
***
Desconectado Desconectado

Mensajes: 151



En línea
Re: Tutorial sobre implementación de librerías Google Sketchup y objetos 3d

Muchas gracias. El tema de selección y eliminación de untextured perfecto. En cuanto al tema de la importación, es curioso como muchas veces las cosas que parecen más fáciles son las que dan mayores problemas.

No te preocupes. No hay prisa. Ya hemos avanzado bastante en una cuestión que, al principio, parecía poco menos que imposible. Siempre existe la posibilidad de retomar el tema en el punto de ejecución semiautomática en que se halla.

Voy a seguir intentándolo aunque sé que si te ha resultado difícil, a mí me va a resultar muy difícil. Pero bueno, no hay prisa ninguna.  Giñar


Tags:
Páginas: 1 2 3 [4]   Ir Arriba
  Imprimir  
 
Ir a:  

www.x-plane.es.
Página creada en 0.1 segundos con 18 queries.