Anda di halaman 1dari 9

Optimización

J 3
Java3D
Prof. Andrés Eloy Castillo R.
Por que optimizar.
optimizar

La renderización
La renderización exige una gran cantidad
exige una gran cantidad
de cálculos.
Estos cálculos,, se multiplican,
p , si las esce‐
nas tienen cambios en el tiempo.
Muchos cambios pueden llegar poner muy
l
lentas a las
l máquinas. Al punto
á l que se pueden
d per‐
der los efectos que se quieren obtener.

Por eso Java3D optimiza los calculos.

Prof. Andrés Eloy Castillo R.
Estrategias de optimización

Java optimiza los cálculos de renderización a


traves de
d uno o combinación
bi ió de d estos tres mé‐
é
todos.

• C
Compilación
il ió de las
d l ramas de la escena.
d l
j
• El ajuste de capacidad
p de los nodos.
• Los límites de la influencia.

Prof. Andrés Eloy Castillo R.
Compilación de las ramas de la escena.

Los objetos
j BrancGroup
ppposeen un método q que le
permite compilar, todo el subgrafo que tenga co‐
nectado.
La compilación de un BranchGroup, per‐
mite obtener una representación inter‐
na que java3D manipula de forma opti‐
ma.

El método compile de la clase


BranchGroup permite de com‐ BranchGroup bg = new BranchGroup();
….
pilar todos los nodos de un ar‐
p ….
bol a partir de su raiz. …..
bg.compile();//aplicar método al final.
Prof. Andrés Eloy Castillo R.
Las capacidades de un nodo TG

setCapability
BG

Todos los objetos de un grafo de escena


Leaf (hoja).
pueden ser afectados por un cierto núme‐
ro de acciones. Node o NodeComponent
o NodeComponent

Algunas acciones tienen como fin modificar, otras


acciones tienen como fin,
fin obtener datos.
datos

Java3D asocia
Java3D asocia un bit de capacidad
un bit de capacidad a cada
a cada Node o 
o
NodeComponent, un bit por cada capacidad posible del 
tipo de objeto considerado.

El método se denomina:  setCapability
Prof. Andrés Eloy Castillo R.
Capacidades asociadas a los Group y los BranchGroup
A un Group o BranchGroup, se le pueden aplicar
Las siguientes acciones:
BG
• Agregarle un hijo.
• addChild
• Obtener referencia de un hijo
de un hijo
BG
• getChild TG
• Insertar un nodo
• insertChild
• Redefinir un hijo
• setChild
• Remover un hijo
• RemoveChild
• Desligar un Group o BranchGroup
un Group o BranchGroup de su
de su padre
• detach
Como se ajustan las capacidades de un BranchGroup

BranchGroup tiene unas constantes.

ALLOW_CHILDREN_EXTEND
ALLOW CHILDREN EXTEND
ALLOW_CHILDREN_READ Cada capacidad que se piense usar, a lo
ALLOW_CHILDREN_EXTEND largo del programa, requiere el ajuste de
ALLOW_CHILDREN_WRITE la capacidad.
capacidad
ALLOW_DETACH

BranchGroup bg = new
= new BranchGroup;
// Para agregar o insertar hijos.
bg.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND) ; 
//Para obtener la referencia
//Para obtener la referencia de un hijo
de un hijo o saber cuantos
o saber cuantos hijo tiene el BranchGroup
el BranchGroup
bg.setCapability(BranchGroup.ALLOW_CHILDREN_READ)
//Para redefinir o remover un hijo.
bg.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE)
//Para desligar un BranchGroup de su padre.
bg.detach()
Como se ajustan las capacidades de un TransformGroup

Para que en tiempo de ejecución un TransformGroup, pueda


aplicar transformaciones geométricas, requiere que se le
active el bit de escritura, y para poder responder a peticiones
de referencia,
referencia se requiere la capacidad de poder leerlo.
leerlo

Las constantes son: ALLOW_TRANSFORM_READ y ALLOW_TRANSFORM_WRITE

Entonces si en tiempo de ejecución, un objeto tipo TransformGroup, va a reali‐


zar transformaciones geométricas y va a dar referencias, entonces hay que
activarle
act a e los
os b
bitt de lectura
ectu a y de esc
escritura.
tu a

TransformGroup tg = new TransformGroup();


tg setCapability(TransformGroup ALLOW TRANSFORM READ);
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Los límites de la influencia
Muchos de los objetos que se usan
en Java3D
en Java3D.
Luces (Light), Behavior, Background, 
etc; tienen
; asociados un volumen
espacial, en donde actua, fuera de 
ese volumen, no tienen efecto los 
mencionados objetos.
objetos
Para definir el volumen de influen‐
Que se logra?: cia, existen, los objetos de la clase
Bound o que hereden de esa clase.
Se logra disminuir el nú‐
mero de calculos y por
ende,
d ell tiempo
i d ren‐
de
derización.
Prof. Andrés Eloy Castillo R

Anda mungkin juga menyukai