Tutorial sobre implementación de librerías Google Sketchup y objetos 3d

(1/11) > >>

AlbertoDur:
En primer lugar deciros que no sé exactamente si he ubicado bien el contenido en la web. Como se trataba de una especie de tutorial pues lo he puesto donde están los tutoriales. En otro caso agradezco a los moderadores el trabajo de moverlo a su sitio.

En segundo lugar que lo he hecho lo más rápido posible. Espero no tenga graves errores. De todas formas los mismos pueden corregirse.

Esto, en realidad, más que un tutorial es la forma en la que se me ha ocurrido la incorporación de los objetos 3d. Puede ir perfeccionándose entre todos y buscándosele variantes hasta que consigamos un método perfecto de incorporación de objetos.

LAS LIBRERÍAS DE GOOGLE SKETCHUP Y X-PLANE

En la página de Google sketchup hay miles de objetos 3d maravillosos que pueden ser instalados en el x-plane. Ej: http://sketchup.google.com/3dwarehouse/cldetails?mid=46f3f70fe38d801af6dcb9e43126f21d&prevstart=0
 También podemos buscar más objetos por la red tecleando en Google “free 3d models”.

La cuestión de insertar esos objetos en el x-plane en el primer momento parecía imposible o extraordinariamente tedioso. No es ni una cosa ni la otra:

Para ello necesitamos las siguientes herramientas:

1º Sketchup  o Sketchup Pro con su plugin para x-plane.

2º XnView (es un programita free de tratamiento de imágines muy fácil y versátil)

3º Ultraedit (como siempre) o un editor de textos que sea potente.

4º Overlay editor (como siempre)


Empezamos:

1º Nos bajamos un objeto de google sketchup en su formato collada. De forma que contenga el objeto 3d y toda su librería de texturas.

2º Lo primero que tenemos que saber es que x-plane únicamente reconoce una textura por objeto (.obj) y en formato .png 256X256.

Los objetos que nos bajamos no están en formato obj. Asimismo llaman a varias texturas (normalmente jpg) y además estas texturas no tienen formato 256X256. Por tanto de momento imposible para x-plane.

PRIMER PASO

Entonces lo primero que tenemos que hacer es en vez de un objeto con muchas texturas es configurar  muchos (mini)objetos con una textura cada uno.

Como lo hacemos?. Imaginemos que tenemos un objeto que se llama castillo por ejemplo en formato .dae.

Dicho objeto al descomprimirlo tendrá dos directorios:
-   Images: donde se encuentran las texturas
-   Models: donde se encuentra el objeto 3d.

Pues bien vamos a ir configurando un objeto obj por cada textura. Para ello:

a)   Del directorio images o donde se encuentren las texturas las borramos o movemos todas menos una (la primera por ejemplo) supongamos que se llama texture0.

b)   Abrimos el Sketchup e importamos el objeto. 

Difiere la versión de Sketchup  v.8 a la versión 2013 (o Pro) a la hora de importar objetos. Mientras la primera los importa a un punto fijo, la segunda habilita la herramienta de mover para ubicar el objeto en el plano. Esto es peligroso puesto que si vamos a importar varias veces el objeto con diferentes texturas para crear tantos objetos como texturas, si los objetos importados no tienen exactamente la misma ubicación en el plano 3d, después, a la hora de ensamblar, no coincidirán las diversas partes del mismo, con un resultado lamentable.

Para ello hacemos lo siguiente:

-   EN SKETCHUP 2013:

1º) Importamos el objeto por primera vez sin ninguna textura.

2º) Después de ubicarlo o instalarlo en el plano lo guardamos como Plantilla (Barra de Menús - Archivo - Guardar como plantilla).

Esa plantilla se quedará como predeterminada mientras trabajamos con el fin propuesto y cada vez que arranquemos el Sketchup. (Cuando terminemos podemos dejarla como plantilla y usar otra o eliminarla : Barra de menús: Ventana - Preferencias - Plantilla).

3º) Ya con la plantilla operativa cada vez que importemos el objeto con una textura en las siguientes operaciones, lo haremos coincidir minuciosamente con la plantilla girándolo y comprobando que coincide con la misma en sus tres dimensiones.

Una vez coincidente con la plantilla ya podremos llevar a cabo la operaciones que se detallan a continuación y grabar y exportar los diversos objetos con la seguridad de que coincidirán bien en el ensamblado final.

-   EN SKETCHUP 8:

El Sketchup 8, como se dijo, no necesita la plantilla ya que importa siempre al mismo punto sin activar la herramienta de mover. Asi, en este aspecto, podemos decir que es mejor que el Pro.

c)    Al importar el objeto nos dirá que faltan texturas (ya lo sabemos) y lo importará sin texturar menos la parte a la que corresponde la textura que hemos dejado en el directorio que aparecerá texturada. Esa parte es la que vamos a configurar como nuestro primer .obj para después ensamblarlo con los demás con el Overlay Editor

d)   En el Sketchup lo que tenemos que hacer es borrar todo lo no texturado. Para ello

-   Una vez importado el objeto, seleccionamos todo (Editar-Seleccionar todo o CTRl+A). (En la v.2013 se encuentra todo seleccionado por defecto sin necesidad de CTRL+A)

-   Ahora hay que resaltar la superficie no texturada.(Barra de menús: Herramientas-HighLight untextured.

-   Así::

-    EN SKETCHUP 8:

-   Con la opción de menú : Herramientas-HighLight untextured.

§   Con la opción de menú: Herramientas – HighLight untextured se marcarán en rojo las áreas sin textura del objeto.

§   ( Hay que tener en cuenta (normalmente para versiones antiguas del Sketchup) que si con la opción de menú Herramientas-HighLight untextured no obtenemos el resultado apetecido de que nos seleccione exactamente la superficie no texturada, nos vamos a una capa de las no texturadas (rojo fuerte) y con la tecla de selección (space) pulsada vamos clikeando hasta seleccionarla ¡PERO OJO!, QUE QUEDE  SELECCIONADA SOLO LA SUPERFICE DE LA CAPA NO LOS VERTICES O ARISTAS DE LA MISMA, (ya que lo borraría todo) .Cuando la tenemos seleccionada: Boton derecho del raton – Seleccionar – Todo el material (asi veremos que nos ha seleccionado todo lo no texturado, si por cualquier motivo vemos que ha seleccionado zonas txturadas, shift+ratón las excluimos de la selección y ya está.)

§   Le damos en el teclado a SUPR y ya nos habrá borrado todo lo no texturado.

-    EN SKETCHUP 2013:

§   Con la opción  Herramientas-HighLight untextured ya resalta en rojo lo no texturado sin necesidad de ir seleccionando con varias pulsaciones y sin afectar a aristas ni vértices.

§   Le damos en el teclado a SUPR y ya nos habrá borrado todo lo no texturado.

e)   Una vez borrada la totalidad del objeto (menos la superficie texturada) lo grabamos con el sketchup y lo exportamos en formato x-plane dándoles nombre (Ejemplo casa1.obj,casa2.obj etc).

f)   Ya tenemos nuestro primer (semi)objeto con su única textura.

g)   Vamos al directorio de texturas,  borramos la que teníamos (texture0, como dijimos en el ejemplo) y en su lugar añadimos la textura siguiente y repetimos la operación anterior. Asi vamos configurando una a una las diferentes partes del objeto con su única textura que después ensamblaremos con el overlay editor.

SEGUNDO PASO

Una vez hecho lo anterior ya tendremos múltiples .obj ensamblables con su textura cada uno. Pero, normalmente dichas texturas no son .png 256X256 que son las única que quiere el x-plane.

Entonces utilizamos el siguiente programita: El XnView.

1º Abrimos el directorio donde están las texturas o las trasladamos a un directorio ad hoc y las seleccionamos todas en el XnView.

Después – Herramientas – Conversión por lotes (añadimos la carpeta donde están las texturas) – Formato de salida png – y en la solapilla de arriba (Transformaciones) configuramos- cambiar tamaño-añadir-Parámetros:ancho:256:Alto:256 y deshabilitamos las opciones “mantener proporción” y “seguir orientación”.

Ejecutamos en “Proceder” y ya tendremos todas las texturas en .png 256X256.

Atencion a un detalle: Hemos apreciado que algún objeto 3d tiene alguna textura con el mismo nombre pero con distintas extensiones. Es dedir P.ej: texture1.jpg y texture1.png.

Eso no nos serviría a la hora de querer implementar el objeto en x-plane y además, para que el XnView no sobreescriba y perdamos una de las texturas renombraremos una de ellas por ejemplo a texture1b.png

TERCER PASO: Asignacion de texturas.

Sabemos que los .obj del x-plane se pueden editar con un editor de texto y allí vemos la textura que tiene asignada. Como hemos visto en el paso anterior hemos cambiado la extensión de todas las texturas a .png y los obj (salvo excepciones) seguirán llamando a los jpg o texturas originarias.

Para cambiarlo lo hacemos con el Ultraedit. Para ello:

Abrimos el UEdit y –Buscar-Reemplazar en archivos- (le damos el directorio ) y le decimos que nos reemplace .jpg por .png en todos. Asi ya los obj llamarán a sus png.

También podemos hacerlo manualmente editando los obj uno a uno pero el método anterior es más rápido. NO OLVIDAR lo anteriormente expuesto respecto a texturas renombradas (texture0b, p.ej.) de manera que hay que procurar que cada obj. Llame a su textura particular.

CUARTO Y ULTIMO PASO: Inserción del objeto en una librería. No he querido detenerme mirando si hay algo en el foro sobre creación de librerías. La forma de crearlas se encuentra en http://marginal.org.uk/x-planescenery/library_tutorial/ . De todas formas si alguien tiene problemas me comprometo a hacer otro dia una guía rápida sobre creación de librerías.

Seguimos. Para insertar nuestro nuevo objeto en una librería creamos un directorio de librería o creamos un nuevo directorio en el directorio donde tengamos nuestra librería de x-plane, con el nombre del objeto y en el mismo meteremos todos los obj y todos los png y lo pondremos en el fichero índice de objetos de la librería “library.txt”. Asi ya lo tendremos para poder usarlo en cualquier escenario..

Ya finalmente sólo nos queda ensamblar el objeto parte a parte en el escenario que queramos mediante el OVERLAY EDITOR de forma que establecemos el punto donde va a ir el objeto. Y ya sin mover para nada ese punto inicial, seleccionamos en la librería el objeto y vamos añadiendo mediante el botón + del overlay o pulsando enter las distintas partes del objeto hasta que quede incorporado al escenario.

That’s all.


grrr05:
Gracias  ^-^

No se me había ocurrido el hecho de eliminar las texturas para separar los objetos eliminando su correspondiente geometría, muy buena idea ;)

Sólo dos apuntes,

- X-Plane 9 admite texturas hasta 2048x2048 y X-Plane 10 hasta 4096x4096, y en cualquier relación de aspecto siempre que las medidas de X y Y sean potencia de 2 (256,512,1024, etc...).
Dicho esto, si fuera el caso que nos encontramos con texturas con unas medidas no estándares siempre las podemos redimensionar a las medidas apropiadas aunque la textura acabe deformada, el mapeado se calcula mediante fracciones del tamaño relativo, que siempre equivale a 1.

- No es necesario el uso de librerías (library.txt) siempre que metamos los objetos resultantes dentro de la misma carpeta del escenario (o subcarpetas que estén dentro). Los paths (rutas) virtuales siempre parten de la raiz (carpeta del escenario). Las librerías son útiles en otros casos como para referenciar un único objeto y que de éste se deriven objetos distintos para dar variedad, por ejemplo los coches (tanto estáticos como dinámicos), dentro del library.txt podemos definir un "objeto virtual" que se llame cars.obj y que este apunte -por ejemplo - a car01.obj, car02.obj, car03.obj etc donde cada uno de estos objetos sería un modelo de coche distinto. De este modo al crear un parking de coches en un escenario sólo debemos utilizar el objeto cars.obj, y X-Plane ya se encargará de aleatorizar los modelos al que hace referencia dicho objeto, y por si no fuera poco cada vez que se arranque el XP variará (no se si me explico...).
Las librerías también pueden ser útiles en otros casos (objetos backup, como el "placeholder" de opensceneryx), pero para un escenario que contenga objetos exclusivos no es necesario en absoluto.

Si me funciona todo bien ya colgaré algunas capturas.

AlbertoDur:
De nada. Un placer compartir ideas con entendidos e interesados que al momento captan la esencia del tema.

Fíjate, ya he aprendido dos detalles más con tu respuesta: la dimensión de las texturas (creo que el 256x256 lo ví en algún sitio allá por la versión 8 y no volví sobre el tema) y el tema de las librerias. Yo lo utilizo porque hace tiempo empecé a elaborar una librería propia que siempre llevo de comodín con los objetos más atractivos que voy encontrando y cuando convierto un escenario o lo veo deficiente suelo tirar de la librería estándar en vez de incluir los objetos en los diversos escenarios.

Respecto a lo que comentabas en el otro post sobre la posibilidad de trabajar con comandos, por ahí van los tiros, se trataría de la elaboración de ficheros por lotes aunque desde dichos ficheros por lotes se requiriera la ejecución de aplicaciones externas en bucles o rutinas de ida y vuelta. No obstante, no sé por qué, siempre le tuve aversión al Blender y lo esquivé con el AC3D o incluso el SketchUp y respecto al Python igual; si no habia más remedio aguantaba Python, si no, déjalo por ahí.

El esbozo de la elaboración de un script o ejecutable para la ejecución del tema que nos ocupa (algunos objetos 3d tienen muchas texturas) no es, de momento, más que una idea y he de confesar que  me da un poco de miedo. He comprobado que cuando sólo eres aficionado, meterte en temas de programación es cuando más te absorbe la máquina en todos los aspectos.

Sería estupendo que los entendidos en la materia, como comentabas, se tomasen interés y analizasen la viabilidad del tema.

Lo importante es que la idea del spanish landmarks, que comentabas, fuera, con el granito de arena de todos, tomando forma y avanzando poco a poco... Y después el Europe landmarks... Y después el world landmarks... And so on...

grrr05:
Ok, acabo de hacer las primeras pruebas con un par de objetos de Barcelona, los mas sencillos que he encontrado (6 texturas cada modelo).

Torres Trade


Plaza España (torres venecianas)


Mola  ;D

La verdad, los objetos no son para nada óptimos para X-Plane, el segundo modelo tiene 20000 triángulos en total, pero almenos mi máquina ni se entera. Pero lo bueno es que el trabajo duro ya está hecho, y la conversión es facil mediante el tutorial, aunque repetitiva y monótona (he visto objetos con 400 texturas!!) pero es que nadie regala nada, y aunque aburrido a mas no poder merece muchísimo la pena. Os recuerdo a los que no habéis estado al caso, que me tiré un mes en modelar y texturizar la twr de LERS (sin hacer el vago y el gandul, no como ahora...), y esos dos objetos me han llevado sólo una hora convertirlos.

No me gusta el tema de automatizar el procesamiento de las texturas, he visto que te vienen en cualquier medida, relación de aspecto, etc... sin tener en cuenta estándares ni ná. Lo que he hecho -lo mas duro del proceso- ha sido abrir cada una en photoshop para redimensionar a las medidas habituales (potencia de 2) intentando mantener una relación de aspecto aproximada y siempre redimensionando a la baja (primer valor potencia de 2 mas bajo a partir del valor original).

También me he encontrado con algunos modelos que tienen caras sin texturizar (la Torre de Collserola por ejemplo, en cada uno de los cuatro modelos disponibles...) y estos requieren edición manual sí o sí. Pero ya puestos también se le pueden añadir las balizas luminosas, o si hay algún rascacielos con una helisuperficie en el tejado asignarle el atributo hard para que sea funcional, etc...


Y ahora la pregunta del millón... ya se que soy muy pesao con esto...
¿Cómo va el tema copyright con el contenido del Warehouse?

El ToS o EULA de google, al igual que casi todos está escrito en un idioma o mas bien con una jerga que no entiendo en absoluto.

http://www.google.com/intl/es/sketchup/3dwh/tos.html

En lo que al contenido de Warehouse se refiere, dice:

(c) By publicly posting or displaying the content you give other end users of the Services a perpetual, sublicensable, irrevocable, worldwide, royalty-free, and non-exclusive license to reproduce, adapt, modify, translate, publish, publicly perform, publicly display and distribute (subject to the restrictions set forth in Sections 11.4 and 20.3 of these Terms) any Content or derivative works thereof which you publicly post or display on or through the Services.

Los usuarios finales (¿sólo los de warehouse o todos?) pueden adaptar, modificar y distribuir cualquier contenido o derivado.
Sujeto a las restricciones definidas en el párrafo 11.4 (el 20.3 no nos afecta)

11.4 Notwithstanding anything to the contrary, without Google’s prior authorization, you may not: (i) aggregate Content obtained from Google Services for redistribution, or (ii) use or distribute Content obtained from Google Services in a mapping or geographic application or service.

...Ahora ya me he perdido, no he entendido nada.

También he visto en foros que se permite el uso libre del contenido, pero ya sabemos que en internet no hay credidiblidad y menos cuando los participantes de dichos foros no tienen absolutamente nada que ver ni con Google, ni Trimble ni nada, son End Users al igual que nosotros...

¿Alguien que sepa de la materia puede arrojar algo de luz sobre este tema?
Claro que todo eso lo digo por si hay intención de publicar un escenario. Como siempre si se lo hace uno mismo y es para uso -exclusivo- privado no hay ningún problema.

EDITO
Tremendo!! 30 texturas  ;D



AlbertoDur:
That's right!.

Con el hecho de que te entusiasme la idea (los resultados son fabulosos) ya me doy por casi satisfecho.

Respecto al tema que comentas de la redimensión de las texturas, el tema que señalabas del Photoshop me parece demasiado trabajo. Vale para un edificio concreto o que le tengas muchas ganas. Para el resto, la utilización del programita XnView (al que conocí exclusivamente por el tema de la redimensión de las texturas Google Sketchup), como indica el tutorial te permite la redimensión y la resolución de la textura por directorios enteros en cuestión de segundos. Échale un vistazo a la rutina de redimensión porque es bastante completa y si el resultado te es suficiente, fíjate el trabajo que te ahorras.

Sigo dándole vueltas al tema de suavizar el trabajo. Igual no hace falta tanta profundidad de programas externos. Quizá nos sobre con plugins internos que realicen el trabajo duro. Lo más duro es el importar - modificar - exportar que es la tarea repetitiva.

El Sketchup sólo lo he utilizado para el presente tema, para otras cuestiones 3d relacionadas con X-Plane siempre utilicé el AC3D. No tengo mucha idea más allá de la básica en el manejo del Sketchup. Pero recordé que siempre trabajé sobre los DSF a través del Ultraedit y de sus scripts elaborados en regular expresions con la herramienta que el mismo te suministra a través de lo que llama Macros.

Buscando a ver si había algo parecido en Sketchup he conocido que trabaja también, desde dentro, con programación de scripts con lo que él llama lenguaje Ruby.

http://www.sketchup.com/intl/es/download/rubyscripts.html

Eso podía salvarnos la vida: Un plugin interno o un par de ellos que: dándole un path con el directorio de las texturas: 1º Seleccionara primera textura. 2º Importara objeto 3º Seleccionara geometría texturada 4º Borrase el resto 5º Exportase obj 6º Pasase a la siguiente textura. Return.

Fíjate en esta página http://rhin.crai.archi.fr/rld/plugins_sections.php en la zona de Files/Misc hay algunos plugins que apuntan hacia nuestras intenciones. Así que por favor, !!alguien que conozca ruby!!!. No pedimos tanto.

Creo que merece la pena, porque el trabajo no es tan ingrato y los resultados son espectaculares. 

We keep trying...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente