Expression 2 holos, um eine Achse rotieren
Hi,
ich habe mich vor kurzem mit den holos aus Expression 2 befasst und habe jetzt auch schon einiges gelernt. Nun habe ich aber ein Problem. Möchte ich z.B. einen tetraeder um seine eigene Achse rotieren lassen, tue ich das ja mit:
Code:
holoAng(N,ang(0,Variable,0)
Soweit so gut. Nun habe ich aber das Problem, das ich zum beispiel 2 Objekte um einen gemeinsamen punkt rotieren lassen möchte. dabei meine ich nicht das sie zb direkt über der Expression schweben, sonder z.B. versetzt sind [ holoPos(N,vec(0,10,0)) ]
Sollen sie jetzt beide z.B. die drehungen der Expression übernehmen. Klappt dies nicht, weil ja jede nur um seine eigene achse rotiert und nicht um den punkt selber.
Ich habe hier mal einen Zeichung gemacht falls ihr nicht versteht was ich meine.
http://www.myfiles.i3h.de/myfiles/bild.JPG
Hoffe ihr könnt mir helfen :P
THX
AW: Expression 2 holos, um eine Achse rotieren
Sollte so gehen
Code:
interval(100)
A=A+0.1 # geschwindigkeit
if(A1>1000000000){A=0}
holoCreate(3)
holoPos(3,entity():toWorld(vec(cosr(A1)*250,sinr(A1)*250,0))) #250 ist für den radius
Dreht sich immer um das expression um es um etwas anderes kreisen zu lassen entity() durch das entsprechende ersetzen
AW: Expression 2 holos, um eine Achse rotieren
Du hast es anscheindend falsch verstanden, es soll nicht um das objekt kreisen, sonder sich mit dem objekt winkeltreu bewegen, dh ein zweiteiliger pfeil, sollte immer zb in die blickrichtung zeigen in die ich sehe, wenn du es probierst zu bauen, wirst du merken was ich meine.
trozdem thx
AW: Expression 2 holos, um eine Achse rotieren
aso oops. hmm da binn ich im moment auch n bissen überfordert
AW: Expression 2 holos, um eine Achse rotieren
Ich hoffe ich hab dein Problem richtig verstanden.
Diese E2 erstellt einen Pfeil aus zwei Holo´s, die um die E2 kreisen:
PHP-Code:
@name
@inputs
@outputs
@persist T
@trigger
runOnTick(1)
Pos = entity():pos()
if(first()) {
holoCreate(1,Pos+50)
holoModel(1,"hqcylinder2")
holoScale(1,vec(1,1,4))
holoAng(1,ang(90,0,0))
holoCreate(2,entity():pos()+50)
holoModel(2,"hqcone")
holoAng(2,ang(90,0,0))
holoScale(2,vec()+2)
}
T++
X = cos(T)*100
Y = sin(T)*100
holoPos(1,Pos+vec(X,Y,50))
holoAng(1,ang(90,T+90,0))
## Position der Spitze
Holo = holoEntity(1)
Size = Holo:boxSize():z()+holoEntity(2):boxSize():z()+2
holoPos(2,Holo:pos()+Holo:up()*Size)
holoAng(2,ang(90,Holo:angles():yaw(),0))
Hast du das so gemeint?
AW: Expression 2 holos, um eine Achse rotieren
Soll nicht um den Chip kreisen. Der Pfeil soll z.B. 50 Units westlich vom Chip gespawnt werden. Wenn man den Chip um die eigene Y-Achse dreht, soll der Pfeil dies auch tun, aber auf der Stelle bleiben.
AW: Expression 2 holos, um eine Achse rotieren
Ah, jetzt versteh ichs.
Sollte jetzt passen:
PHP-Code:
@name
@inputs
@outputs
@persist
@trigger
runOnTick(1)
Pos = entity():pos()
if(first()) {
holoCreate(1,Pos+50)
holoModel(1,"hqcylinder2")
holoScale(1,vec(1,1,4))
holoAng(1,ang(90,0,0))
holoCreate(2,entity():pos()+50)
holoModel(2,"hqcone")
holoAng(2,ang(90,0,0))
holoScale(2,vec()+2)
}
holoPos(1,Pos+vec(0,50,50))
holoAng(1,entity():angles()+ang(90,0,0))
## Position der Spitze
Holo = holoEntity(1)
Size = Holo:boxSize():z()+holoEntity(2):boxSize():z()+2
holoPos(2,Holo:pos()+Holo:up()*Size)
holoAng(2,entity():angles()+ang(90,0,0))
AW: Expression 2 holos, um eine Achse rotieren
YEA so hab ichs gemeint, thx!
Aber die schwierigere Frage, kannst du mir erklären wie dus gemacht hast? werde darraus nicht ganz schlau...
AW: Expression 2 holos, um eine Achse rotieren
Ist recht Simple.
Das erste Holo, also die Basis, übernimmt einfach die Angles der E2 (+90 Pitch, damit es gekippt ist).
Mit E:up() bekommt man die Richtung der oberen Seite eines entities, und mit boxSize():z() die Größe der Z-Achse. Size ist hier die Länge der Z-Achsen beider Holos.
boxSize() funktioniert nicht richtig mit Holos, normalerweiße müsste man beide Z-Achsen noch durch 2 Teilen, da man ja nur die Länge von der Spitze bis zur Mitte (E:pos()) braucht. Deshalb muss man hier einfach Size austesten.
Richtung*Größe + Postion = Position der oberen Seite als Weltkoordinaten. Da kann man jetzt das zweite Holo platzieren.
Ich hoffe das ist halbwegs verständlich, hab gerade nicht viel Zeit ;)