XSIforum.com

Scripting en XSI

0 Usuarios y 1 Visitante están viendo este tema.

agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Scripting en XSI
« en: 19 Diciembre 2007, 15:58:51 »
Bueno, voy a inagurar mi blog. Lo quiero dedicar a todas estas cosas que me gustan a mi, scripting, programación, simulación, rigging...

Como parece que mi ordenador no pensaba disfrutar del 2008 y ha ido al paraiso de silicio donde van todos los ordenadores, empezaré con cosas que solo necesiten texto.

Así que habriremos boca con qué posibilidades tenemos de scripting en XSI, para que sirve y quién debería aprender scripting.

¿Qué es el scripting?
Bien, en XSI podemos por ejemplo crear un cubo y moverlo. Para ello necesitaríamos, darle a Get/Primitive/Polygon/Cube y moverlo usando la translación. Esa es la manera directa, hay otra manera, el scripting.
Consiste en decirle al ordenador (mediante un lenguaje de script) que tiene que hacer y el script se encarga de hacerlo por nosotros.

Ventajas
1-Automatización.- Podemos guardar ese script para poder reutilizarlo muchas veces pulsando solo un botón. Está claro que para mover un cubo no haríamos un script,pero.. y si queremos automatizar un proceso bastante largo, por ejemplo.. el rigging de una pierna.
2-Repetición- Procesos que involucran a muchos objetos.- Mover un cubo no es problema, pero y si tenemos que mover 1000 cubos en diferentes cantidades, un script de 3 o 4 lineas nos lo puede hacer por nosotros.
3-Precisión- Muchas veces podemos hacer las cosas a ojo, pero a veces necesitamos precisión. Programando podemos hacer ciertas cosas como nosotros queremos.
4-Reutilización- Simplifica tareas repetitivas
5-Personalización- Te permite incorporar herramientas que XSI no posee.

y algunas otras más...

Posibilidades de scripting en XSI
XSI ahora mismo soporta 4 lenguajes: Visual Basic script, Java Script, Python y Perl.
Son lenguajes diferentes, es como hablar inglés, español o chino, cada uno tiene sus características.

Antes de hablar sus características, vamos a explicar algo importante:
-XSI por defecto solo trae VBasic y Jscript.
-Para usar Python o Perl tenemos que instalarlos en nuestro PC.

Otra cosa, estos 4 lenguajes no son propios de XSI, sino externos lo cual es una ventaja:
-Te permite usar tus conocimientos de script para otras cosas (no solo XSI)
-Te permite buscar scripter que conozcan ese lenguaje (y no solo de 3D)

Maya siempre ha defendido MEL (un lenguaje propio de script) pero al final, ha incorporado Python.. ;)

VBasic
Es un languaje clásico dentro del scripting.
Ventajas
Es (por así decirlo) el lenguaje nativo de XSI.
Inconvenientes
Algo antiguo
Sintaxis algo incómoda para mi gusto (la sintaxis es algo así como la gramática de un idioma)

JScript
Lenguaje bastante cómodo, ya instalado en XSI
Ventajas
Se hacen scripts de forma rápida
Syntaxis bastante cómoda
Inconvenientes
Ciertas carencias del lenguaje, al incorpora ciertas estructuras de programación
No permite librerías (hablaremos de eso cuando tratemos Python)

Python
Lenguaje nuevo, potente y versatil.
Ventajas
Lenguaje moderno (posee ciestras estructuras de programación muy utiles)
Sintaxis cómoda (solo en algunos aspectos)
Gran cantidad de librerías disponible (una librería es un grupo de scripts ya creado por alguien o por ti mismo, que puedes usar dentro de tu script)
Lenguaje usado en otros programas (Houdini, Maya,...)
Inconvenientes
No viene instalado con XSI (dificulta el poder pasar un script a otra persona, aunque instalarlo es facil)
Sintaxis algo restrictiva (es cómoda en algunos aspectos, pero en otros te obliga a hacer las cosas solo como Python quiere)
Uso de librerías (esta ventaja también es un inconveniente porque tienes que pasar junto con tu script dichas librerías)

Perl
Ni idea, no lo he usado nunca. Así que prefiero no hablar de lo que desconozco.

¿Qué uso yo?
Para empezar, scripts cortos los hago en JScript (así que es el que recomiendo para empezar), pero al final siempre hago muchas cosas en Python (sobre todo para tener mis propias librerías de scripts y reutilizarlos)

¿Quién debería saber scripting?
En mi opinión, todo el mundo que se dedique profesionalmente a esto, debería de tener unos ligeros conocimientos sobre scripting. (Igual que son buenos de modelado, animación,...)
Eso puede hacerte la vida (la 3D) mucho más facil y no necesitas mucho tiempo para aprender dos o tres cosas básicas pero que solucionan muchas tareas que hacerlas a mano son un mundo.

Límites del scripting
Bueno, el scripting tiene sus límites:
- Rápidez (ciertas tareas en scripting son muy lentas)
- Ocultar el código (cualquiera puede ver tú codigo y a veces no quieres que eso suceda)

Para solucionar esto, existe la programación pura y dura (C++). Eso es otro cantar, quizás en próximas canciones... ;-)

Bueno, espero que lo hayais encontrado util, si quereis preguntar cualquier cosa. Estoy a vuestra disposición.

Unaided

  • ***
  • 3293
Re: Scripting en XSI
« Respuesta #1 en: 19 Diciembre 2007, 16:39:06 »
¿Hasta dónde afecta (en aspectos técnicos) el soporte de script de un software, caso concreto de XSI, a la portabilidad de dicha aplicación?

Visual Basic es un lenguaje propiedad de Microsoft. Si no me equivoco, la versión Linux de XSI no incorpora VBs, y en su defecto es Python el lenguaje "nativo" de XSI bajo Linux.

Hablando en terminos de desarrollo de XSI, ¿hasta dónde está XSI vínculado y/o desarrollado pensando en una única plataforma?

Según leí, XSI, como la mayoría de aplicaciones complejas, están escritas en C/C++, algo que no es vinculante a la plataforma. Si bien, el caso de la programación de su interfaz deriva problemas de portabilidad. Pero me surgen cuestiones entorno a esto. Por qué Maya, Houdini, Blender, o Lightwave, "no encontraron" los problemas de los que se habla, respecto a la programación del interfaz de XSI, en sus versiones para otras plataformas diferentes a Windows.

Por otro lado, ¿qué hace que Python sea un entorno tan usado en aplicaciones 3D? Blender está escrito en Python (corregirme si me equivoco) además de usarlo como script. Houdini como dices, también usa Python como script.




agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Re: Scripting en XSI
« Respuesta #2 en: 19 Diciembre 2007, 17:02:03 »
En mi opinión, XSI en el caso de scripting no está nada limitado. Tienes 4 opciones, y una de ellas Python en plena expansión, mira si es el caso, que Maya ha cambiado su filosofía a la de XSI. Lenguajes externos al programa, lo mismo Houdini, Maya,Blender.. así que XSI ha apostado desde el principio por la filosofía que otros están adoptando ahora.

No he usado XSI bajo Linux, pero sé que muchas empresas lo usan. Así que no puedo opinar, pero en scripting no hay problema, usa Python.

Los lenguajes portables (incluido C/C++) son portables hasta cierto punto, si tu código usa funciones del sistema operativo (Linux, MSDos, Windows..) está claro que él código tal como está no va a funcionar, aunque solo habría que substituir la parte de código específica al sistema. (o usar librerías multisistema, que para eso existen)

Creo que alguién que trabaje en empresas con XSI bajo Linux puede explicarnos mejor las cuestiones de portabilidad (a ver si alguién sabe y nos comenta)


Python es muy usado en mi opinión por tres razones:
-Es un lenguaje más moderno que los anteriores, por lo que incorpora características nuevas para solucionar facilmente problemas que los otros se encontraban.
-Hay una cantidad enorma de librerías gratuitas que te ahorra hacer trabajo que ya otro ha hecho.
-Como cada vez hay más programas que lo usan, pues los otros también quieren. (la pescadilla que se muerde la cola)

No se las limitaciones de desarrollo de xsi en portabilidad, pero por lo que se, su estructura interna es bastante buena y bastante abierta (aunque deberían abrir algunas cosillas más)

P.D: Blender está escrito en C++ (los lenguajes de scripting son mucho más lentos que C++)

Re: Scripting en XSI
« Respuesta #3 en: 19 Diciembre 2007, 19:04:02 »
Tengo entendido que XSI 6 también soporta C# y la plataforma .Net. ¿Hasta que punto es esto cierto? ¿Que limitaciones tiene? Yo suelo programar con C# y esto sería de gran interés...

agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Re: Scripting en XSI
« Respuesta #4 en: 19 Diciembre 2007, 19:08:37 »
sí que lo soporta, incluso creo como scripting. No lo he tocado aun, pero sí que se puede. En el SDK hay varios ejemplos.. La documentación de XSI está bastante bien (quizás con algunas lagunas de ejemplos) y los ejemplos del SDK bastante apañados.

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: Scripting en XSI
« Respuesta #5 en: 20 Diciembre 2007, 03:40:25 »

Re: Scripting en XSI
« Respuesta #6 en: 24 Diciembre 2007, 05:03:38 »
Buenísimo Agedito!!!! ahora que me estoy iniciando en esto seré un fiel seguidor de lo que nos puedas contar en tu blog :)

agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Re: Scripting en XSI
« Respuesta #7 en: 24 Diciembre 2007, 09:12:16 »
Buenas Cesar, a ver si me reparan el PC de casa y puedo publicar más cosas.

Re: Scripting en XSI
« Respuesta #8 en: 05 Enero 2008, 20:39:57 »
Hoy leyendo la ayuda de XSI me encontré con un párrafo que me recordó la pregunta sobre portabilidad a otras plataformas de Unaided :)

Citar
If you want to write scripts that can run on either Windows or Linux, you need to follow these principles:
• Use forward slashes (/) in paths instead of back slashes (\). Windows recognizes forward slashes, but back slashes are treated as escape characters on Linux.
• Remember that paths and file names are case-sensitive on Linux.
• Do not use drive letters in paths.
• Do not use spaces in paths and file names.
• Be aware of other limitations on Linux, as described in the next section.

Limitations on Linux

There are currently certain limitations with scripting on Linux:
• XSI provides limited versions of Scripting.TextStream (Close, Readline, Writeline, AtEndOfStream) and Scripting.Dictionary (Add, Item).
• When using the VBScript split() command, use a large number for the count argument. For example:

   parsed = split(textstring, ".", 2000)

Por cierto.... en la wiki XSISDK hay algunas notas sobre JScript bajo linux que podrían ser interesante si se quieren desarrollar scripts compatibles.....

Citar
JScript On Linux

JScript on Linux is currently at JScript version 5.0, which means it is missing a few features added in the version 5.5 and later.

All Windows machines suitable for running XSI should have 5.6 installed by default.

According to the Script56.chm file, 5.0 is missing these methods:

    * Array.push
    * Array.pop
    * Array.unshift
    * Array.splice
    * Array.shift
    * String.CharCodeAt
    * RegExp.global
    * RegExp.ignoreCase
    * RegExp.rightContext (and .leftContext)
    * RegExp.multiline
    * RegExp.lastMatch
    * RegExp.lastParen
    * Number.toPrecision
    * Number.toFixed
    * Number.toExponential
    * Object.hasOwnProperty
    * Object.isPrototypeOf
    * Object.propertyIsEnumerable
    * lastMatch
    * undefined Property
    * Date.toTimeString (also toDateString, toLocaleTimeString and toLocaleDateString)
    * String.toLocaleUppercase (and toLocaleLowercase)
    * String.localCompare
    * Error.name
    * Error.message
    * Arguments.length
    * Function.Apply method
    * Function.Call
    * Function.Callee
    * Global.DecodeURI
    * Global.DecodeURIComponent
    * Global.EncodeURI
    * Global.EncodeURIComponent

Most of these methods can be easily avoided, for example the array operations can be implemented via the existing methods.

The Regular Expression support is more primitive in 5.0, not only are some methods missing from RegExp but some regular expressions that work on Windows may appear as a syntax error on Linux. Simple Regular expressions will work.

M-TUNE

  • **
  • 668
  • Mental Reeeyyy..!!!
Re: Scripting en XSI
« Respuesta #9 en: 22 Mayo 2008, 18:05:31 »
updates>!  ::)