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 - ElQueSeRompeElOrto

#1
General Programadores / Ayuda Con Pascal Please
03 de Abril de 2004, 12:17:11 AM
 Hola como les va , es un honor estar entre ustedes avidas mentes jovenes,
les queria preguntar algo sobre pascal para D.O.S. ,es decir el Pascal 7.0
para D.O.S me hace conflictos en mi maquina y no puedo usarlo se me cuelga
y demas aparte que el editor es un asco (...y es D.O.S.) ,bueno queria seber si el Delphy o Delfy (no se como se escribe) ,tiene un modo para hacer
programas D.O.S.  ,al estilo del Visual C++ que tiene un modo para programas de consola como le dicen , bueno espero que alguien tenga la
gentileza ,bondad ,amor y compacion de contestarme por favor que es urgente muchas gracias... brillantes mentes jovenes y no tan jovenes  :D .
#2
Programación gráfica / Sobre claves de animacion de max
01 de Junio de 2003, 10:06:55 PM
                                Che estuve intentando leer y exportar las claves de animacion de 3d StudioMax y sinseramente no entiendo como genera el 3dMax los cuaterniones de orientacion , es decir ,para ser mas directos
no se como es el sitema  gerarquias y como obtiene la orientacion final
para cada obeto de la ecena , por favor si alguien conoce del tema
o me recoienda un link me salva la vida , un saludo y chaoooo.                                
#3
                                Tengo una duda con el tema de acceder al vertex buffer de un objeto cada
vez que quiero comprobar la deteccion de colisiones a nivel poligono.
Estoy usando Direct3D y necesito usar vertex buffers ,pero he leido que
no es muy eficiente que digamos acceder al buffer a comparacion de hacceder a un array comun y corriente ,de echo la eficiencia cae aun mas
si tengo una placa con Transform&Light y el vertex buffer se almacena en
la memoria de video ,el acceder a esta es mas lento que acceder a la memoria del sistema con el microprocesador ,(creo que es asi) ,pero tambien he leido que  al AGP alivia un poco este proceso , la cuestion es
En maquinas Con T&L es recomendable hacer un array de vertices para colisiones y un buffer D3D para renderizar ... es un locura lo que estoy diciendo? , si alguien sabe algo al respecto  y  me aconseja  si no es molestia desde lla muchas gracias...                                
#4
                                me equiboque en la formula final ,me olbide del mas  + :

Camara.pos.x = MatrizNave._41 + MatrizNave._21 * fElevacion +
+ MatrizNave._31 * -fDistancia;

Camara.pos.y = MatrizNave._42 + MatrizNave._21 * fElevacion +
+ MatrizNave._32 * -fDistancia;

Camara.pos.z = MatrizNave._43 + MatrizNave._21 * fElevacion +
+ MatrizNave._33 * -fDistancia;                                
#5
                                hAber ColSon2 ,hace algo mas facil y sencillo:

Agarra la matriz de transformacion de la nave y ubica la camara de esta manera:

Primero la orientamos:
---------------------------
MatrizCamara._11 = MatrizNave._11;
MatrizCamara._21 = MatrizNave._12;
MatrizCamara._31 = MatrizNave._13;

MatrizCamara._12 = MatrizNave._21;
MatrizCamara._22 = MatrizNave._22;
MatrizCamara._32 = MatrizNave._23;

MatrizCamara._13 = MatrizNave._31;
MatrizCamara._23 = MatrizNave._32;
MatrizCamara._33 = MatrizNave._33;

y despues la posicionamos:

Camara.pos.x = MatrizNave._41 + MatrizNave._31 * -fDistancia;
Camara.pos.y = MatrizNave._42 + MatrizNave._32 * -fDistancia;
Camara.pos.z = MatrizNave._43 + MatrizNave._33 * -fDistancia;

fDistancia seria la distancia de la camara a la nave.

la idea de este algoritmo es Copiar la matriz transpuesta de la nave a
la camara y despues posicionarla usando el elemento de la matrizNave
"._31 ,._32 y ._33" , que es un vector cuyo modulo vale 1 y apunta siempre hacia adelante de la camara ,por eso pongo negativo a fDistancia
asi la camara se posa atras , de lo contrario seria adelante .
Te lo describo porque capaz que la pifie escribiendo. pero la idea funciona.

Otra cosa es que la nave estara justo adelante de la camara lo que deverias hacer es esto:

Camara.pos.x = MatrizNave._41 MatrizNave._21 * fElevacion +
+ MatrizNave._31 * -fDistancia;

Camara.pos.y = MatrizNave._42 MatrizNave._21 * fElevacion +
+ MatrizNave._32 * -fDistancia;

Camara.pos.z = MatrizNave._43 MatrizNave._21 * fElevacion +
+ MatrizNave._33 * -fDistancia;

asi la camara esta un poco mas arriba ,igual juga un poco con los elementos de las matrices.
un saludo.                                
#6
                                Te doy un consejo : Ni siquiera hace falta que rotes un vector v(0,0,1)
con la matriz de tu objeto ,ya que podes sacar los vectores de referencia del objeto de la misma matriz ,Osea:

vecRight.x = MatrizObjeto._11;
vecRight.y = MatrizObjeto._12;
vecRight.z = MatrizObjeto._13;

vecUp.x = MatrizObjeto._21;
vecUp.y = MatrizObjeto._22;
vecUp.z = MatrizObjeto._23;

vecLook.x = MatrizObjeto._31;
vecLook.y = MatrizObjeto._32;
vecLook.z = MatrizObjeto._33;

vecPosicion.x = MatrizObjeto._41;
vecPosicion.y = MatrizObjeto._42;
vecPosicion.z = MatrizObjeto._43;


El vector "veclLook" es el que apunta hacia adelante ,y es el que usarias para darle la direccion al lasser o misil de la nave.

Conclusion: estos vectores son ni mas ni menos que los ejes del sistema local del objeto definida por la matriz de transformacion ,otra cosa si queres construir la matriz vista a partir de la de transformacion solo tenes
que transponer la matriz y guala!

ha ..me olvidava , y lo que haces mal con:
"D3DXVec3Transform(&vec4,&v,&matrizRotacionDeLaNave); "
es que la matriz en sus elementos "._41 ._42 ,._43" tienen que estar a cero ,es decir no tiene que tener traslacion , pero igual extrae el vector que queres como te lo ilustre arriba.

Un Saludo.                                
#7
Programación gráfica / Proyeccion 3D a 2D en D3D8
13 de Diciembre de 2002, 07:22:54 AM
                                Gracias "mac^threepixels" ,espere la respuesta pero llego ReMilGraciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassssssssssssssss. :D                                
#8
Código de la Semana / Reciclado de memoria - Fernando Rodríguez
13 de Diciembre de 2002, 06:46:41 AM
                                "ethernet" escribio:

Un unsigned short en mi maquina son 16 bits ... y en mi maquina un unsigned short & y un unsigned short * son 32 bits. y mi maquina trabaja mejor con datos de 32 bits. Y la tuya ? XD


Mira ethernet tu maquina deve ser cualquiercosa menos una PC compatible , si es que estamos hablando de pasar argumentos a funciones , esto se realiza algo asi:
En C: -------------------
void vMyFuncionBebe( int Argumento1 ,unsigned short Argumento2 ,int * pArgumento3 );

Compilado seria:(en el momento de la llamada) ------------------------------
Push [DireccionDeRetorno]
push Argumento1
push Argumento2
push Argumento3

Para que no te quede claro que ,"push" si estas en un procesador de 32 bits ,te va a meter en la pila 32 bits ya que como veras no se puede especificar cuantos bytes o bits se meteran ,por lo que si en memoria tu unsigned short ocupa 2 Bytes , irremediablemente se lo metera en la pila como 4 bytes.

Estoy Casi Seguro que es asi ...bue sino alguien corrija un saludo.

                               
#9
Programación gráfica / Proyeccion 3D a 2D en D3D8
03 de Diciembre de 2002, 06:57:32 AM
                                Tratare de ser mas claro:

La funcion "D3DXvec3Project()" ,toma un punto 3D ,osea en el espacio,
y lo proyecta al espacio de la pantalla ó "screen cordinates",ahora bien,
las cordenadas que me devuelve esta funcion no son las convensionales, sino unas extrañas cuyo origen esta en el centro de la pantalla y no en la esquina superior.
Pongo un ejemplo: Si un punto proyectado aparece en el centro de la pantalla ,y si la resolucion es de 800x600 las cordenadas deberian ser
(X=400 ,Y=300) , pero la funcion "D3DXvec3Project()" me devuelve
(X=0 ,Y=0) , y si por otro punto aparece en la esquiena superior izquierda
las cordenadas deverian ser (X=0,Y=0), pero la funcion que mencione
me da por ejemplo (X=-2300 ,Y=1300) ,en definitiva otro sistema de cordenadas. bien si alguien sabe como convertir esas unidades o conoce
otra funcion y/o algoritmo les agradecere mucho.
Un saludo.                                
#10
Programación gráfica / Proyeccion 3D a 2D en D3D8
02 de Diciembre de 2002, 05:34:07 AM
                                Hola ,soy nuevo en estos pagos de los foros de stratos ,por eso me presento ,soy "el que se rompe el Orto (o culo)" no es por joder o algo por el estilo ,pero a la ora de buscarme un Nick no encontre otro que me encaje mejor que este :D.

Bueno les cuento que tengo un problema en D3D8 para proyectar un punto 3D a 2D .Con la funcion de la D3DX para proyectar ,esta me realiza
una proyeccion en un sistema raro de ejes 2D de D3D8 en el cual el origen esta en el centro de la pantalla y no en la esquina superior izquierda de la misma, he buscado un poco pero en la doc. de la API pero
no encontre nada ,no lo se quizas me rompo tanto el te tuje , que ya no cordino bien el trafico de ondas cerebrales.

Bueno Un Saludo y si alguien sabe algo y contesta estare muy agradecido.                                





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.