Diciembre 22, 2018, 08:18:22 PM Ultima modificación: Diciembre 22, 2018, 10:53:03 PM por DarkKRuleR
¡Buenas! Esto antes no me pasaba y no sé qué quité o cambié y ahora... ¿Cómo puedo evitar que los planos cercanos a la cámara se corten?



¿Hay forma de resolverlo sin tocar las coordenadas? No puedo alejar más la cámara... Y antes funcionaba bien así.

Lo que hago es un "d3d_set_zwriteenable(false);" al inicio del draw, y lo pongo a true al final de nuevo. Y en el draw, hago varias llamadas a "User Defined Events" para hacer los dibujos. He probado a ponerlo fuera, directamente en el draw, y también falla... también probé a poner el d3d_set_culling y el d3d_set_hidden a false al inicio y nada... No recuerdo qué más podría ser.

#1 Diciembre 22, 2018, 10:14:07 PM Ultima modificación: Diciembre 22, 2018, 10:28:33 PM por Jucarave
No entiendo muy bien lo que estoy viendo, pero por defecto las camaras 3d tienen 2 planos de corte: cuando los pixeles están muy próximos a la cámara y cuando están muy alejados, llamados znear y zfar respectivamente:



Solamente los objetos que estén entre ambos planos (el view frustum) se van a dibujar.

Para remediar un poco tu problema, puedes tratar de haciendo el znear mas pequeño (por defecto es igual a 1) pero debe ser mayor a 0.

Esto se hace en la función que setea la proyección de la cámara, utiliza d3d_set_projection_ext para definir los valores de znear y zfar, en la documentación puedes ver un poco mas de info:

https://docs.yoyogames.com/source/dadiospice/002_reference/drawing/drawing%203d/3d%20projections/d3d_set_projection_ext.html

Pero sería algo como esto:

[gml]
d3d_set_projection_ext(xfrom, yfrom, zfrom, xto, yto, zto, 0, 0, 1, 60, room_width/room_height, 0.1, 16000);
[/gml]

Saludos

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


Diooos, ¡El znear! Nunca lo hubiera dicho xDDD ¡¡Gracias!! Problema resuelto. Siempre uso znear = 1, y debió ser cuando dividí todos los tamaños entre 10, que ahora todo era tan pequeño que entró en el znear... le puse 0.001 y ya funciona ^^