ALCCLoadVolume: volumen de carga
Deriva de AVolume y se muestra en el panel como LCC Load Volume.
La diferencia clave respecto a un volumen de recorte o un plano de sección es la etapa en la que actúa: el recorte y el seccionado solo cambian el resultado final del renderizado, mientras los datos se cargan y se suben a memoria de vídeo igualmente; un volumen de carga actúa durante el recorrido de nodos, y los nodos descartados no se leen en absoluto. Es por tanto el único de los tres que reduce la cantidad de carga y el uso de memoria de vídeo.
| Cabecera | Tools/LCCLoadVolume.h |
| Clase base | AVolume |
| Blueprint | Blueprintable / BlueprintType |
| Licencia | Función de la edición Pro; sin licencia no tiene efecto |
Un mismo volumen de carga puede afectar a varios Actors LCC de la escena a la vez.
Properties
| Propiedad | Tipo | Descripción |
|---|---|---|
bEnabled | bool | Si está activado |
Mode | ELoadRegion | Inside (cargar solo lo que queda dentro) u Outside (excluir lo que queda dentro) |
VolumeType | ELoadVolumeType | Box (caja) o Sphere (esfera) |
Para el significado de los valores, consultar ELoadRegion y ELoadVolumeType.
Ninguna de las tres propiedades tiene Setter; se asignan directamente. El filtrado se aplica en el momento de la carga, así que después de un cambio hay que volver a cargar los datos.
Precisión del borde
La prueba funciona por nodo y no por splat, así que el borde es más grueso que el de un volumen de recorte: un nodo del borde se descarta por completo en cuanto no cumple la condición.
Los dos modos usan pruebas distintas:
| Modo | Condición | Comportamiento del borde |
|---|---|---|
Inside | Un nodo se carga solo si queda por completo dentro del volumen | El rango conservado es algo menor que el volumen |
Outside | Un nodo se excluye en cuanto se solapa con el volumen | El rango excluido es algo mayor que el volumen |
Ambos lados son deliberadamente conservadores para que el cambio de LOD sea estable. En un octree los límites de un nodo hijo siempre quedan dentro de los de su padre, y el LOD pasa del hijo al padre a medida que la cámara se aleja. Si Inside usara una prueba de intersección, el padre se cargaría por solaparse parcialmente y devolvería regiones que los hijos ya habían excluido: visualmente, un bloque de contenido que aparece de golpe al alejarse. Outside tendría el problema simétrico con una prueba de contención.
Cuando se necesita un borde preciso, superponer un volumen de recorte con la misma transformación: el volumen de carga reduce la cantidad de carga y el de recorte perfila el borde.
Creación en tiempo de ejecución
ALCCLoadVolume* Volume = GetWorld()->SpawnActor<ALCCLoadVolume>(
ALCCLoadVolume::StaticClass(), Location, FRotator::ZeroRotator);
Volume->VolumeType = ELoadVolumeType::Box;
Volume->Mode = ELoadRegion::Inside;
Volume->bEnabled = true;
Volume->SetActorScale3D(FVector(20.0f, 20.0f, 10.0f));
Component->AddLoadVolume(Volume);
Component->Load(Path); // hay que configurarlo antes de la carga
El orden importa: el filtrado ocurre durante la carga, así que añadir o quitar un volumen de carga o cambiar una propiedad después de Load() no altera los datos ya cargados; hace falta volver a cargar.
// Volver a cargar tras cambiar el rango filtrado
Volume->SetActorLocation(NewLocation);
Component->Refresh(); // internamente UnLoad y luego Load
Refresh() cuesta lo mismo que una recarga completa, consultar ALCCActorBase::Refresh.
Elección entre este y un volumen de recorte
| Necesidad | Cuál usar |
|---|---|
| Tomar una parte pequeña de una escena grande y ahorrar memoria de vídeo y tiempo de carga | Volumen de carga |
| Abrir huecos o cortar una cubierta, donde importa un borde preciso | Volumen de recorte |
| Ahorrar memoria de vídeo y además un borde preciso | Superponer ambos con la misma transformación |
| Alternar el efecto con frecuencia en tiempo de ejecución | Volumen de recorte (cambiar bEnabled surte efecto en el fotograma siguiente, sin recargar) |
See Also
- ALCCClippingVolume: volumen de recorte
- ALCCSectionPlane: plano de sección
- AddLoadVolume: las interfaces de añadir y quitar del lado del Component
- Edición de escena - Volúmenes de carga: pasos e imágenes
- Ediciones y licencias: alcance de la licencia