Name
TEVE

Syntax
TEVE x, y, z, u, v

Aufklappen Wertebereiche
x, Typ real
y, Typ real
z, Typ real
u, Typ real
v, Typ real

Aufklappen Erläuterung
Definiert einen Punkt (x/y/z) im 3D wie beim VERT -Befehl, gibt jedoch zusätzlich die Bezugskoordinate für die Textur (u/v) an (u/v-Mapping). TEVE ist in ArchiCAD die einzige Möglichkeit eine Textur um eine amorphe Struktur zu kleiden (wrapping)! Der Punkt selbst wird nicht dargestellt, sondern ist Grundlage für die Befehle EDGE und COOR.

Die Erweiterung von VERT durch den TEVE-Befehl besteht darin, dass in einem Befehl 2 Punktdefinitionen erfolgen:
 1. Die Lage im Raum(x/y/z)
 2. Die Lage auf der Textur/im Material (u/v)
Die mit dem Punkt erzeugten Vektoren und mit diesen wiederum definierten Polygone besitzen dann ebenfalls zu ihrer Präsenz im Raum ein Pendant auf der Textur. Bei der Erzeugung des Körpers mit dem BODY-Befehl werden dann die Polygone aus der Textur so verzerrt, dass sie der Geometrie des Polygons im Raum entsprechen und planar darauf projiziert. Den Algorithmus der Verzerrung wird mit dem COOR-Befehl festgelegt.
Es ist bei der Körperdefinition darauf zu achten, dass die Projektion von außen erfolgt. Erscheint die Textur gespiegelt auf der Oberfläche, ist bei der Definition des Körpers innen und außen vertauscht.

Aufklappen Beispiel
! ------------------
! Koordinaten der Ecken

a=1 ! Breite/Kantenlänge
b=a*sin(60) ! Dreieckshöhe
h1=a/2*TAN(30) ! Schwerpunkt
z=b ! Höhe


! ------------------
! Material definieren

mx=2.5*a ! Breite der Bitmap/Textur in Metern
my=b ! Höhe der Bitmap/Textur in Metern

DEFINE TEXTURE "wrap" "tetra_wrap.gif", mx,my, 1, 0

DEFINE MATERIAL "Tetra" 20,
 1, 1, 1, 0.58, 0.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 ! Schraffur-Index, Farbe-Index, Textur-Index
 IND(FILL, "Leere Schraffur"), 0, IND(TEXTURE, "wrap")

SET MATERIAL "Tetra"

! ------------------
! Punkte

TEVE 0,0,0 ,1.0*a,0 ! Ecke 1
TEVE a,0,0 ,0.0*a,0 ! Ecke 2
TEVE a/2,b,0 ,0.5*a,b ! Ecke 3
TEVE a/2,h1,z ,1.5*a,b ! Ecke 4
TEVE a,0,0 ,2.0*a,0 ! Ecke 5 (Lage im Raum wie 2)
TEVE a/2,b,0 ,2.5*a,b ! Ecke 6 (Lage im Raum wie 3)

! ------------------
! Kanten

EDGE 1,2, -1,-1, 0 ! Kante 1
EDGE 2,3, -1,-1, 0 ! Kante 2
EDGE 3,1, -1,-1, 0 ! Kante 3
EDGE 1,4, -1,-1, 0 ! Kante 4
EDGE 4,3, -1,-1, 0 ! Kante 5
EDGE 1,5, -1,-1, 0 ! Kante 6 (wie Kante 1)
EDGE 4,5, -1,-1, 0 ! Kante 7
EDGE 4,6, -1,-1, 0 ! Kante 8 (wie Kante 5)
EDGE 5,6, -1,-1, 0 ! Kante 9 (wie Kante 2)

! ------------------
! Flächen

PGON 3, 0, 0, 1, 2, 3 ! Fläche 1
PGON 3, 0, 0, 4, 7,-6 ! Fläche 2
PGON 3, 0, 0, 7, 9,-8 ! Fläche 3
PGON 3, 0, 0, 3, 4, 5 ! Fläche 4

! ------------------
! Texturausrichtung und Körpererzeugung

BASE

TEVE 0,0,0 ,0,0 ! Ursprung
TEVE 1,0,0 ,0,0 ! X
TEVE 0,1,0 ,0,0 ! Y
TEVE 0,0,1 ,0,0 ! Z

COOR 2+1024, 1,2,3,4

BODY -1


Damit das Beispiel funktioniert muss das Bitmap "tetra_wrap.gif" in der geladenen Bibliothek liegen. Siehe Beispielobjekt.

Aufklappen Besonderheiten
Die u und v-Koordinaten sind nur in der photorealistischen Darstellung wirksam. Befindet sich die 3D-Darstellung im OpenGL-Modus (ab ArchiCAD 8.x), wirken sie auch in der schattierten Darstellung.

Wird der TEVE-Befehl mit VERT innerhalb eines Körpers (zwischen 2 BODY) gemischt, werden die u/v-Koordinaten der TEVE-Befehle ignoriert. Auch wenn die Verwendung von TEVE eigentlich keinen Sinn macht (z.B. bei Punkten für den COOR-Befehl), muss ein (beliebiger) u/v-Wert mit TEVE definiert werden. Werden Punkte sowohl mit VERT als auch mit TEVE definiert, verwenden sie eine gemeinsame Indexverwaltung.

Das Beispiel mit dem Tetraeder verwendet eine geschlossene Textur um einen geschlossenen Körper. Da die Material/Texturdefinition das Bitmap aber in der Fläche endlos aneinanderkachelt, müssen manche Punkte und damit auch Kanten in der Raumdefinition redundant definiert werden. Siehe im Beispiel Punkt 2/5 und Kante 1/6. Damit wird definiert, welche Punkte auf der Textur im Raum aneinandergrenzen. Der Aufwand gegenüber einer einfachen Texturierung und der Verwendung von VERT ist deutlich höher.


Aufklappen Kontext
3D-Skript

Aufklappen ArchiCAD
ab 6.0