Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





desaparicion de objetos

Iniciado por anitta__, 22 de Enero de 2007, 12:38:54 AM

« anterior - próximo »

anitta__

Hola!
Estoy haciendo mi proyecto final de carrera sobre la simulacion en 3d de una planta industrial y utilizo para ello direct3d. no tengo mucha idea. el caso es que se trata de un robot que traslada piezas a distintas maquinas y estas las mecanizan. cuando ya estan mecanizadas las  voy poniendo en una rampa y quiero que una vez alli desaparezcan. ya se que debe de ser algo muy basico, pero no se hacerlo. Gracias ya por adelantado
un saludo

Zaelsius

Te recomiendo que ven vez de usar una API 3D directamente, uses un motor 3D como por ejemplo Irrlicht (google it), que ya te permite cargar modelos 3d, rotarlos, girarlos, todo bien mascadito y orientado a objetos.

Suerte

anitta__

Muchas gracias, pero resulta que ya tengo mucho hecho: la pieza y el robot y las maquinas, ya rotan, se desplazan, etc. el rollo es que tengo dos problemas:

no se como crear varias piezas iguales. bueno, crearlas si que se, pero no se como hacer para que cada vez que el sitio de abastecimiento se quede vacio aparezca una. pense en hacer un array de frames de piezas. no se si se puede. y asi con las mismas rutinas referirme a cualquiera de ellas. la que este en el sitio indicado.

el otro problema, el de que el frame de la pieza desaparezca, pense en poner directamente framepieza:=nil pero me da problemas. ¿se os ocurre alguna otra idea?

digamos q de momento todo me funciona correctamente con una sola pieza, pero no se como eliminarla, ni como hacer que la cosa funcione con muchas, como poder aprovechar todo el codigo.

soy nueva en esto. agradezco cualquier opinion por evidente que resulte. seguramente para mi no lo sea. muchas gracias.
no se si influye pero estoy programando en borland delphi.

senior wapo

Tienes que tener dos tipos de objetos distintos: uno representa las piezas y otra su representacion gráfica que sería su malla de triángulos.

Si tienes 6 piezas iguales tendrias 6 objetos pieza pero sólo 1 objeto malla que sería compartido por todas las piezas con la misma apariencia. Cada pieza tendria un puntero al mismo objeto malla triangular que estaría centrado siempre en la posición (0,0,0).

A la hora de dibujar creas las matrices de transformación usando la posición y orientación del objeto pieza y a continuació miras su puntero a la malla y dibujas la malla tal cual sin transformaciones. Las matrices que has asignado a direct3d se encargarán de colocar los triángulos en la posición correcta de la pieza.

Para hacer que aparezcan y desaparezcan oues creas y destruyes los objetos pieza y los pones o sacas de la lista/array donde los tengas almacenados.

anitta__

muchas gracias. me parece coherente, pero como he dicho no tengo mucha idea, por no decir ninguna. me podrias decir donde puedo aprender a crear objetos maya para mis piezas?
es que como supondras, lo unico que hice hasta ahora ha sido importar los archivos desde el 3ds max->.X  como mesh builder y relacionarlos con un frame. no se si te refieres a eso. un unico mesh y varios frames.

senior wapo

Malla = mesh traducido al español, vamos, un conjunto de triángulos que forman una figura, lo que cargas de un fichero .X o .3ds  etc....

Yo de delphi, cero patatero. Seguro que hay páginas y foros de delphi por la red con información sobre 3D, al menos en inglés.

El proceso es el mismo en delphi que en C++ u otro lenguaje: una sola copia en memoria de los triangulos y te limitas a cambiar las matrices de transformación antes de pintar. Si de esa transformación se encarga en delphi un objeto llamado frame, pues prueba eso. Tiene que ser el objeto al que le puedes asignar posición , orientación y malla.

A la malla no la toques, no le apliques transformaciones que lo que harias sería modificar los vértices originales, su geometría, y afectaría  a todas las piezas que pintases usando esa malla.

anitta__

muchas gracias por tu aclaracion. como hasta ahora nunca habia utilizado obtejos repetidos, lo estaba haciendo bien, pero pensaba q hacia falta una mesh y un frame por cada objeto. me has aclarado conceptos. muchas gracias otra vez :)

anitta__

pese a toda tu gran explicacion, sigo sin saber hacer desaparecer las piezas, es decir, como eliminar un frame mientras se está ejecutando el programa. quiero que al llegar a un sitio la pieza desaparezca, me serviría moverla a una posición que no se vea en pantalla, pero me parece un poco chapucero. preferiría eliminarlo, por eso de no tener mogollon de piezas en sitios q no se ven. si alguien sabe, pido ayuda. yo pense q sabia. debe de ser solo una frase o algo.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.