LCCObject::setClipPrism
Imposta una regione di ritaglio a prisma poligonale.
Definisce un volume prismatico estrudendo un insieme di vertici complanari di un poligono lungo la normale della faccia tramite offsetMin / offsetMax, e ritaglia la scena di conseguenza. Supporta poligoni sia convessi sia concavi; i poligoni autointersecanti non sono supportati.
Passa undefined oppure ometti il parametro per rimuovere il ritaglio.
Requisito di versione
SDK v0.6.4+
Supporto motore
Three.js
API
LCCObject::setClipPrism(param?: LccClipPrismParams): void
Parametri
LccClipPrismParams
| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|---|
vertices | IPoint3[] | Sì | - | Vertici del poligono del piano di riferimento (coordinate del mondo, complanari, ordine di percorrenza qualsiasi). Minimo 3, massimo 200. |
offsetMax | number | Sì | - | Offset superiore lungo la normale della faccia (può essere negativo, deve essere maggiore di offsetMin). |
offsetMin | number | Sì | - | Offset inferiore lungo la normale della faccia (può essere negativo, deve essere minore di offsetMax). |
normal | IPoint3 | Sì | - | Direzione della normale. |
clipSide | number | No | 1 | Modalità di ritaglio: 1 = mantieni l'interno (ritaglia l'esterno), -1 = mantieni l'esterno (ritaglia l'interno). |
IPoint3
interface IPoint3 {
x: number;
y: number;
z: number;
}
Valore di ritorno
void
Esempio di utilizzo
// Impostare una regione di ritaglio a prisma rettangolare (4 vertici complanari)
lccObject.setClipPrism({
vertices: [
{ x: 0, y: 0, z: 0 },
{ x: 10, y: 0, z: 0 },
{ x: 10, y: 10, z: 0 },
{ x: 0, y: 10, z: 0 }
],
offsetMin: -5,
offsetMax: 5,
normal: { x: 0, y: 0, z: 1 },
clipSide: 1
});
// Ritaglio inverso: mantenere l'esterno del prisma
lccObject.setClipPrism({
vertices: [
{ x: 0, y: 0, z: 0 },
{ x: 10, y: 0, z: 0 },
{ x: 10, y: 10, z: 0 },
{ x: 0, y: 10, z: 0 }
],
offsetMin: -5,
offsetMax: 5,
normal: { x: 0, y: 0, z: 1 },
clipSide: -1
});
// Rimuovere il ritaglio
lccObject.setClipPrism();
Note
- I vertici devono essere complanari (tolleranza: 0,01 unità di coordinate del mondo). Vertici non complanari causano il fallimento della chiamata con un log di errore.
- Il numero di vertici deve essere compreso tra 3 e 200. Valori al di fuori di questo intervallo causano il fallimento della chiamata.
offsetMaxdeve essere strettamente maggiore dioffsetMin; in caso contrario la chiamata fallisce.- La regolazione di
offsetMin/offsetMax/clipSideè un'operazione leggera e può essere chiamata ad alta frequenza. - La modifica dei vertici del poligono attiva un aggiornamento interno della texture, pertanto si sconsiglia di aggiornare frequentemente i vertici.
- I poligoni autointersecanti non sono supportati; il loro utilizzo produce risultati di ritaglio imprevedibili.
API correlate
LCCObject::setClipBox()— Ritaglio con bounding box allineato agli assiLCCObject::setClipPlane()— Ritaglio con piano