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.
Prof. Andrés Eloy Castillo R.
Estrategias de optimización
• 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.
setCapability
BG
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
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
Las constantes son: ALLOW_TRANSFORM_READ y ALLOW_TRANSFORM_WRITE