Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - BeRSeRKeR

#46
Programación gráfica / Imagen difuminada en directX
23 de Agosto de 2007, 08:43:10 PM
Tal vez sea cosa de mip-mapping. ¿Has probado a no crear niveles de mip-map al crear la textura?.

Saludos.
#47
Modelado / Juntar dos .bip
19 de Agosto de 2007, 11:49:39 PM
Cita de: "Pogacha"Que es un archivo bip? y para que quieres juntarlos?
Un archivo bip es donde se guarda la información de animación y setup (entre otras cosas) de los esqueletos del biped (character studio, el sistema de animación  de caracteres propio de MAX).

Cita de: "Fiki´s"Pues eso q me gustaria saber si se pueden juntar dos erchivos .bip en un solo bipedo, si es asi, como se hace??
Depende de lo que quieras decir con juntar. Si por ejemplo quieres mezclar dos bips en un mismo personaje (por ejemplo poner un bip en las piernas y otro distinto en la parte superior del cuerpo), puedes utilizar el Motion Mixer. Mírate la ayuda de MAX. En Contenido busca Animation/Motion Mixer. También hay un pequeño tutorial en la colección de tutoriales titulado Combining Motions with the Motion Mixer.

Saludos.
#48
Hola.

Al parecer se recomienda hacer uso de parámetros.

http://msdn2.microsoft.com/es-es/library/system.data.sqlclient.sqlcommand.parameters(VS.80).aspx

(Al parecer los paréntesis en la URL no le sientan bien al foro :))

Con eso evitas tener que formatear el tipo de dato manualmente, simplemente le pasas el dato y él ya se encarga de formatearlo correctamente.

Además parece ser que es más óptimo.

Saludos.
#49
Programación gráfica / Rotar un nodo para encarar un punto
14 de Agosto de 2007, 07:05:15 PM
Hola.

Calcula el vector que va desde la cabeza hasta el punto en cuestión (vector Z). Ahora escoge un vector "up" (vector Y) arbitrario (0,1,0 podría ser, aunque no te puedes confiar, no sea que  Z e Y sean coincidentes/paralelos) y calcula el producto vectorial entre Z e Y. Eso te dará un vector perpendicular a ambos, el vector X. No olvides normalizar los vectores.

Con eso ya tienes la base para construir la matriz de rotación (si no me falla la memoria):


X.x    X.y    X.z   0
Y.x    Y.y    Y.z   0
Z.x    Z.y    Z.z   0
P.x    P.y    P.z   1


Eso en nomenclatura row-major ala Direct3D. Si fuera column-major (OpenGL), tendrías que trasponer la matriz. P sería el vector posición de la cabeza (en teoría P debería ser 0 puesto que se supone que esta matriz de rotación la multiplicarás por la matriz de transformación del bone que ya llevará la traslación incluída).

Si utilizas la librería D3DX, puedes utilizar la función D3DXMatrixLookAtLH o D3DXMatrixLookAtRH, dependiendo del sistema de coordenadas que utilices (left-handed o right-handed).

Ahora bien, seguramente eso es sólo una de las tareas que tengas que llevar a cabo. Es posible que también quieras mezclar la animación "precalculada" del modelo (cabeza incluída :)) y la rotación recién calculada.

Y también es posible que quieras restringir la rotación (no sea que el personaje se nos desnuque :lol:) y a la vez hacer que el resto de la jerarquía se vea afectada por dicha rotación. Para ello deberás mirar el tema de la cinemática inversa (IK).

Como nota informativa, existen librerías para manejar la animación de personajes. Una muy conocida es Cal3D. Yo no la he utilizado nunca pero creo que debería tener esas cosas que he mencionado.

Saludos.

PD: todo esto suponiendo que utilices algún sistema de bones ó tags.
#50
General Grafistas / Pasar modificador Physique a Skin
10 de Agosto de 2007, 11:45:01 AM
Cita de: "CoLSoN2"Parece lo que busco, lo único es que lo he metido en la carpeta plugins pero no lo veo en la interfaz por ningún lado. ¿Sabes cómo se usa?
Si no recuerdo mal tiene extensión "dlu" por lo que tiene que estar en el panel de utilidades. Ahí debe haber un botón que te permita buscar todas las utilidades instaladas y en la lista debe salirte ese plugin en concreto.

Saludos.
#51
General Grafistas / Re: Pasar modificador Physique a Skin
10 de Agosto de 2007, 10:35:19 AM
Cita de: "CoLSoN2"Veréis, tengo un personaje animado que usa Physique y tengo que exportarlo a FBX. Por lo que he leído, el exporter de Max a FBX no soporta Physique, así que tengo que convertir la animación para que use Skin, ¿alguien sabe si hay alguna forma de hacer esto sin rehacer la animación?
Hay una utilidad en Sparks que pasa de physique a skin. Lo he buscado rápidamente y he visto una versión para MAX6 y 7 (que creo que también es compatible con MAX8). Para MAX9 no recuerdo si hay o no y la verdad es que no recuerdo si pululaba por ahí el código fuente para poder recompilar.

Saludos.
#52
Off-topic / Los videojuegos y los predicadores
10 de Agosto de 2007, 01:03:29 AM
Por lo que entiendo en el recorte de periódico, la noticia se refiere en realidad a una serie televisiva de dibujos, ¿no?.

Es tremendo... :lol:
#53
General / La nueva de Carmack
09 de Agosto de 2007, 09:10:57 AM
Cita de: "Alexpi"es una pena, si JC no demuestra la potencia del og3.0 quien lo hara?
Creo que aún no hay drivers para OpenGL 3.0, ¿no?. Y teniendo en cuenta que la tecnología la llevan desarrollando algo así como dos años...

Pasa lo mismo que con DX10, no lo utilizan porque no les aporta nada que quieran tener en el juego (no que DX10 no aporte nada nuevo, que no es lo mismo :)).

Por cierto, más videos.

Presentación de Tech5 por Matt Hooper, diseñador jefe de Rage.
Charla de John Carmack.
Turno de preguntas para John Carmack.

Saludos.
#54
General / La nueva de Carmack
07 de Agosto de 2007, 10:43:59 PM
¡Y falta este video!. :)

Tech 5 Engine Exploration HD

Es la continuación de los dos que ha puesto Ager. En él muestra las herramientas que se han desarrollado para crear el contenido gráfico del motor/juego.

Saludos.
#55
General Programadores / Problema con ASP.NET & Session State
07 de Agosto de 2007, 12:16:36 PM
Bueno pues parece ser que con el IE6 que tenemos en el servidor web sí funciona.

Es que yo he instalado el pack MultiIE para poder probar en el mismo sistema el IE6 y el 7 y se ve que el IE6 de ese pack tiene algo raro...

Saludos.
#56
General Programadores / Problema con ASP.NET & Session State
07 de Agosto de 2007, 11:55:09 AM
Vale, seguimos con los problemas. Este debe ser una tontería, pero no sé cómo solucionarlo. :lol:

A ver, yo tengo la página con el sistema de identificación de formularios activado. El formulario de identificación se encuentra en "Login.aspx". Además, tengo un "Default.aspx" que automáticamente redirige la respuesta a "Catalogue.aspx".

La cosa va como sigue. Yo pongo en el navegador la URL:

http://localhost:8080

Evidentemente, se coge por defecto la página "Default.aspx". Esta a su vez redirige a "Catalogue.aspx", pero como el usuario no está identificado, me redirecciona a "Login.aspx":

http://localhost:8080/Login.aspx?ReturnUrl=%2fdefault.aspx

Entonces me identifico y como el "ReturnUrl" es "Default.aspx", se va a dicha página que a su vez me redirecciona a "Catalogue.aspx" (como es de esperar).

Bien, ahora estoy en "Catalogue.aspx", hago un pedido y proceso el pedido. Al hacer ésto, me direcciona a "Order.aspx". Pues bien, aquí es donde está el problema. Si yo ahora le doy a botón "volver" del navegador, en Firefox, IE7 y Opera me devuelve a "Catalogue.aspx" (que es lo correcto), pero en IE6 me devuelve a "Login.aspx".

¿A alguien se le ocurre a qué puede deberse?.

Gracias.
#57
General Programadores / Problema con ASP.NET & Session State
06 de Agosto de 2007, 01:07:44 PM
Hola de nuevo. :)

Tengo otro problemilla, aunque en esta ocasión es HTML/CSS (al final tendré que cambiar el título del mensaje :lol:).

Resulta que yo tengo un cuadro de diálogo (una capa) que cuando se muestra, aparece centrada en el navegador y además se muestra una capa semi-transparente de fondo para evitar que  se haga clic en algún elemento que no sea el cuadro de diálogo. Pero claro, si hay barras de desplazamiento y el usuario las desplaza, la capa ya no ocupará toda la pantalla y el cuadro de diálogo tampoco estará centrado. Evidentemente podría añadir un manejador para el evento de scroll y actualizar posiciones, pero paso de hacer eso.

Así que en lugar de eso, lo que hago es que cuando se muestra el cuadro de diálogo oculto las barras de desplazamiento:

document.getElementsByTagName('html')[0].style.overflow = 'hidden';

y cuando el cuadro de diálogo se cierra, se vuelven a mostrar:

document.getElementsByTagName('html')[0].style.overflow = 'auto';

Pues bien, ésto funciona perfectamente en IE6/7 y Opera, pero en Firefox, justo al ocultar las barras de desplazamiento, la vista se mueve hasta la parte superior de la página. Así que la pregunta es si ésto se puede evitar de alguna forma.

Si no, me imagino que acabaré utilizando el "ModalPopup Extender" que viene con el "Control Toolkit" de MS ASP.NET AJAX. :)

Gracias.
#58
General Programadores / Problema con ASP.NET & Session State
05 de Agosto de 2007, 10:05:47 PM
Muy interesante el generador que mencionas. :)

En cuanto al UpdatePanel y el UpdatePanelProgress sí los he visto pero por ahora no lo estoy utilizando. Estoy haciendo uso de la librería del lado cliente para todo.

Gracias.
#59
General Programadores / Problema con ASP.NET & Session State
05 de Agosto de 2007, 04:26:32 AM
Bueno, al final he hecho caso a Diferencial y me he descargado la librería de Microsoft, ASP.NET AJAX.

Y la verdad es que está muy bien. Facilita mucho las cosas. Me ha agradado mucho el que se puedan pasar tipos de datos propios (clases, etc) del servidor al cliente y viceversa (gracias a JSON). Es bastante curioso poder utilizar tus propias clases C# en javascript (reflection rulezzz :)). Y además es mucho mejor y más rápido que andar analizando la respuesta en formato XML.

El caso es que he hecho una primera implementación de la cesta de la compra con esta librería (me ha llevado unos pocos minutos adaptar el código que tenía) y por ahora parece funcionar bien (¡cruzo los dedos! :lol:).

Lo único que no me entusiasma del todo es los métodos (del lado servidor) que sirven de enlace con JavaScript (PageMethods) tengan que ser estáticos (en las versiones anteriores parece que ésto no era así). Aunque por ahora no me supone un inconveniente.

En fin, eso es todo por ahora.

Gracias.
#60
General Programadores / Problema con ASP.NET & Session State
03 de Agosto de 2007, 01:00:17 PM
Hey Vicente, supongo que al final acabaré preguntando por allí, pero en principio prefiero intentarlo aquí. :)

En cualquier caso os comento. Lo cierto es que después de seguir depurando la aplicación, me da que el problema no está en la caché.

Lo que está ocurriendo es que yo envío la petición XMLHttp al servidor pero parece ser que éste no la procesa (repito, sólo me pasa en IE y no siempre, pero cuando ocurre, se descoloca toda la cesta de la compra, claro) ya que pongo un punto de ruptura en el aspx que procesa la petición y no salta. Lo que no entiendo es que si la petición aparentemente no tiene éxito, ¡cómo es posible que se me esté actualizando el contenido de la cesta de la compra (con cosas que no deberían ser, of course!).

Explico un poco mejor el proceso que sigo.

El usuario tiene la opción de hacer clic en el botón "Añadir a la cesta" de un producto determinado.

Hecho ésto, aparece un cuadro de diálogo donde puede especificar la cantidad y la variante a comprar. Entonces, al pulsar el botón "Aceptar", se envía una petición XML (o sea, Ajax) al servidor.

Al servidor se le pasan ciertos datos del producto como la referencia, la cantidad y la variante. De esta forma tengo los datos suficientes para insertar el producto en la lista de la cesta de la compra (que se almacena en la sesión).

Entonces recorro la lista de productos que hay en la cesta y genero el código HTML, que es la respuesta que se envía al cliente. Así que hecho ésto, se recibe la respuesta en JavaScript y simplemente machaco el contenido de la capa que utilizo como contenedor de la cesta de la compra, con el código recién recibido desde el servidor.

A su vez, cada uno de los elementos de la cesta de la compra, tiene un pequeño botón que sirve para eliminar dicho producto de la cesta. Lo que hace este botón es que llama a una función JavaScript que a su vez lleva a cabo otra petición XML al servidor para que elimine de la lista de la cesta el producto indicado. Una vez más, y como antes, como respuesta se produce el código HTML que se introducirá en la capa correspondiente a la cesta de la compra.

Pues bien, como he dicho, la función JavaScript que lleva a cabo la petición se llama perfectamente, pero no así el aspx que procesa la petición. Y lo más raro es que la función JavaScript que recibe la respuesta sí que se llama.

Pongo un poco de código.

Con esta función se lleva a cabo la petición. Como véis es código típico que se utiliza en los ejemplos de Ajax. En este caso he puesto que la petición sea síncrona pero ocurre lo mismo si es asíncrona:

function sendRequest(url, mime, fnRequestManager)
{  
   http_request = 0;

   if (window.XMLHttpRequest)
   {
       http_request = new XMLHttpRequest();
       if (http_request.overrideMimeType)
       {
           http_request.overrideMimeType(mime);
       }
   }
   else if (window.ActiveXObject)
   {
       try
       {
           http_request = new ActiveXObject("Msxml2.XMLHTTP");
       }
       catch (e)
       {
           try
           {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e) {}
       }
   }

   if (!http_request)
   {
       alert('ERROR: Unable to create an instance of XMLHTTP');
       return false;
   }

   //http_request.onreadystatechange = fnRequestManager;
   http_request.open('GET', url, false);
   http_request.send(null);
   
   fnRequestManager();

   return true;
}


Esta es la función que envía la petición de eliminación de un producto de la cesta de la compra:

function onRemoveItemFromCartClicked(cartItemKey)
{
   sendRequest('RemoveItemFromCartRequest.aspx?key=' + cartItemKey, "text/plain", manageRemoveFromCartDlgRequest);    
}


Ahora la función "callback" fnRequestManager correspondiente a la eliminación de un producto de la cesta:

function manageRemoveFromCartDlgRequest()
{
   if (http_request.readyState == 4)
   {
       if (http_request.status == 200)
       {
           var responseText = http_request.responseText;

           var cartContent = document.getElementById('cartContent');
           
           cartContent.innerHTML = responseText;
       }
       else
       {
           alert('ERROR: unable to manage request');
       }
   }
}


Y finalmente el aspx que procesa la petición y genera la respuesta que contiene el código HTML que se inserta en la capa correspondiente a la cesta de la compra:

protected void Page_Load(object sender, EventArgs e)
{
string code = "";

string key = Request.QueryString["key"];

DataTable table = Session["cart"] as DataTable;

table.Rows.Remove(table.Rows.Find(key.Substring("cartItem-".Length)));

// Generamos el código para la cesta de la compra
code += ShoppingCartElement.EmitHtml(table);

// Reasginamos el carrito de la compra
Session["cart"] = table;

Response.Write(code);
}


O sea que recapitulando, en el caso de la eliminación de un producto, siempre se entra en "onRemoveItemFromCartClicked", siempre se entra en "sendRequest", no siempre se entra en "Page_Load" (lado servidor) y siempre (y esto es lo más extraño si resulta que no se está generando una respuesta) se entra en "manageRemoveFromCartDlgRequest".

En fín,  a ver si se os ocurre algo que pudiera estar causando ésto.

Muchas gracias.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.