Surface kopieren
Übersicht

LastsamuraiBetreff: Surface kopieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Hab jetzt lange gesucht und rumprobiert, dabei ist aber nichts brauchbares herausgekommen ![]() Mein Problem ist folgendes: Ich lade ein Mesh und hole mir das Surface von diesem mit GetSurface. Alles kein Problem, aber nun will ich ein zweites Surface diesem Mesh hinzufügen, welches die Vertices und Triangles vom ersten übernimmt. Hab versucht die Punkte alle in Types mit den zugehörigen Koordinaten zu speichern und diese dann nochmal auszulesen und in dem neuen Surface zu speichern. Hat auch geklappt (habs überpfüft... die Vertices sitzen alle korrekt an ihrem Platz), nur klappt bei mir das verbinden danach nicht mehr, weil ich keine gerade Fläche habe sondern mein Mesh verformt ist. Gibt es eine andere Möglichkeit um nen Surface zu "kopieren" ? Oder muss ich das so machen wie ich es angefangen habe und die Vertices irgendwie zu Triangles verbinden? Danke schonmal ![]() MfG. LastSamurai |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was genau willst du damit dann erreichen? =) weiß nicht was das dir nützt ^^
Weiß nicht genau was du willst aber Meshes kopieren und zusammenfügen geht mit: copymesh & addmesh |
||
Lastsamurai |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du bringst mich gerade auf ne idee ^^ kann man das mesh einfach kopieren und dann zum ersten mit AddMesh zusammenfügen? hat man dann 2 surfaces auf 1 mesh? | ||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
mesh1=loadmesh..,
mesh2=copymesh(mesh1) addmesh mesh2,mesh1 freeentity mesh2 klar geht das aber was soll das bringen^^ |
||
Lastsamurai |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hat schon nen Sinn keine lust den jetzt zu erklären werds morgen mal probieren ob das so klappt wie ich will ^^ thx 4 help | ||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
also kopieren macht erstmal 2 surfaces, 2 meshs
addmesh fügt das eine Objekt dem anderen hinzu, wobei aber das hinzugefügte Mesh an seiner ursprünglichen Stelle erhalten bleibt. D.h. du müsstest es per FreeEntity nach dem Laden löschen. Nun hast du 2 Meshes mit gleicher textur auf einem Surface... also das Gegenteil von dem was du gerade sagtest ^^ Mehrere Surfaces lassen sich an Modellen in einigen 3D-Modellern einstellen (Glaube 3dsMax müsste das beherrschen) Anschließend kannste die Einzelteile (getrennte Objekte) mit FindChild und derem Namen in Blitz ansprechen. Also was willst du denn nun mit zwei Surfaces erreichen? ^^ *edit* da war wer schneller als mein müdes Hirn zu dieser Zeit ^^ Zitat: Hat schon nen Sinn keine lust den jetzt zu erklären werds morgen mal probieren ob das so klappt wie ich will ^^ thx 4 help
Da plant wohl jemand ein Geheimprojekt? Bahnbrechendes? ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
SetBuffer BackBuffer() MoveEntity CreateCamera(),0,0,-6 TurnEntity CreateLight(),30,-30,0 cube=CreateCube() cube2=CreateCube() PositionMesh cube2,2,2,0 AddMesh cube2,cube FreeEntity cube2 While Not KeyHit(1) TurnEntity cube,0,1,0 RenderWorld Text 20,20,CountSurfaces(cube) Flip Wend End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt ja addmesh hat single-surface unterstützung... in dem fall irgendeine kleinigkeit in der brus des 2. entitys veränndern sowas wie Code: [AUSKLAPPEN] b=Createbrush(250,250,250);anstatt 255,255,255
paintmesh mesh2,b freebrush b |
||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wozu types.... einfach alle Triangles des meshes durchloopen und deren vertices verbinden. oder eben mit copymesh. | ||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
genau wozu types???? wo siehst du hier types es war nie die rede von types | ||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ...Hab versucht die Punkte alle in Types mit den zugehörigen ...
da .... |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
achso....... daaa........ äääää....... da könnte man types verwenden wenn man die information für die nachwelt aufheben will wenn nicht kann man das noch in der selben for next schleife machen.... | ||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da das in selbe Thema herein passt (wegen AddMesh) poste ich das mal hier rein. Das Problem liegt aber nicht bei AddMesh, sondern beim PositionMesh was ich wegen addmesh anwenden muss.
Wieso also werden alle Pflanzen richtig positioniert, wenn ich PositionEntity anwende und bei PositionMesh aber keine einzige Pflanze zu sehen ist (wahrscheinlich durch FreeEntity wenn y kleiner 5) Funktionieren die beiden von den Einheiten her etwa komplett anders? Ich weiß nur dass das Bezugssystem bei PositionEntity und PositionMesh anders ist. Code mit PositionEntity Code: [AUSKLAPPEN] Dim tree(anzahl)
For i=0 To anzahl tree(i)=LoadMesh("xxx.censored^^") EntityTexture tree(i),palmtex ScaleEntity tree(i),0.15,Rnd(0.12,0.18),0.15 x#=Rnd(20,190) z#=Rnd(10,190) PositionEntity tree(i),x#,TerrainY(isle,x#,0,z#),z# RotateEntity tree(i),0,Rnd(0,360),0 If EntityY(tree(i))<5 Then FreeEntity tree(i) EndIf fore_counter=fore_counter+1 If fore_counter=400 Then UpdateWorld RenderWorld fore_counter=0 Text 0,200,(100*i/anzahl)+"% der Palmen geladen" Flip EndIf Next Code mit PositionMesh Code: [AUSKLAPPEN] Dim tree(anzahl)
For i=0 To anzahl tree(i)=LoadMesh("xxx.censored^^") EntityTexture tree(i),palmtex ScaleMesh tree(i),0.15,Rnd(0.12,0.18),0.15 x#=Rnd(20,190) z#=Rnd(10,190) PositionMesh tree(i),x#,TerrainY(isle,x#,0,z#),z# RotateMesh tree(i),0,Rnd(0,360),0 If EntityY(tree(i))<5 Then FreeEntity tree(i) EndIf fore_counter=fore_counter+1 If fore_counter=400 Then UpdateWorld RenderWorld fore_counter=0 Text 0,200,(100*i/anzahl)+"% der Palmen geladen" Flip EndIf Next |
||
Lastsamurai |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Junkprogger hat Folgendes geschrieben: Wozu types.... einfach alle Triangles des meshes durchloopen und deren vertices verbinden. oder eben mit copymesh.
lol bin ich dumm... habs jetzt danke euch ![]() Achja und ich hab das in Types gemacht, weil ich die Vertices und Triangles später noch brauche. MfG. LastSamurai |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Positionentity setzt das entity irgendwo hin und das bleibt dor egal wie oft man diesen befehl wiederholt
positionmesh verändert die koordinaten der vertices selbst und so ist das was du nach dem ersten mal siehst eine neue mesh die wenn du den befehl wiederholst wieder verändert wird das selbe gild für rotateMesh: du hast die pflanzen mesh verändert und drehst sie danach um den zentrumspunkt ..... ich versuchs mal zu zeigen: Ausgangsmesh (0=Mesh zentrum=DrehPunkt=koordinatenpunkt(Entityx/y/z) usw) Code: [AUSKLAPPEN] PMESH
M S E 0 E S M HSEMP -> Nach positionentity: Code: [AUSKLAPPEN] PMESH
M S E 0 E S M HSEMP nach Positionmesh: Code: [AUSKLAPPEN] PMESH
M S 0 E E S M HSEMP drehst du danach mit rotatemesh drehst du um den null punkt bei positionentity hat es den gewünschten effekt doch bei PositionMesh drehst du das ding wie einen planeten um die sonne und dabei irgendwo hin.... mine empfehlung: Erst scale dann Rotate und dann position in dieser reihenfolge ist alles in butter |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einen schöneren AHA Effekt gibt es nicht ![]() Da ja alle Objektkoords jetzt bei 0 liegen ist ja jedes Objekt unter 5 ![]() hab das jetzt mit: Code: [AUSKLAPPEN] If TerrainY(isle,x#,0,z#)<5 Then
FreeEntity tree(i) EndIf gelöst danke dir nochmals FTC ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group