Mesh wird nicht angezeigt / 2d in 3d wie am besten?
Übersicht

![]() |
mas93Betreff: Mesh wird nicht angezeigt / 2d in 3d wie am besten? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leute,
Ich will gerade ein 2d spiel in 3d machen(wegen transparenz und noch vielem mehr) Wie soll ich das am besten machen? Sprites?? Meshs erstellen? Ich habs mal so versucht, es wird aber nix angezeigt: Code: [AUSKLAPPEN] AppTitle"Jump n Beam" Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global mh Global auswahl Type wall Field x Field y Field brush Field mesh Field surface Field tex Field v0,v1,v2,v00,v11,v22 End Type cam=CreateCamera() PositionEntity cam,0,0,-1 Repeat Cls mh=MouseHit(1) If auswahl=0 And mh=1 Then createwall() drawall() UpdateWorld RenderWorld Flip Until KeyHit(1) End Function drawall() For w.wall=Each wall PositionEntity w\mesh,w\x,w\y,0 Next End Function Function createwall() w.wall=New wall w\brush=CreateBrush() w\mesh=CreateMesh() w\surface=CreateSurface(w\mesh,w\brush) w\v0=AddVertex(w\surface,0,0,0) w\v1=AddVertex(w\surface,0,-4,0) w\v2=AddVertex(w\surface,2,-4,0) AddTriangle(w\surface,w\v1,w\v0,w\v2) UpdateNormals w\mesh w\v00=AddVertex(w\surface,2,0,0) w\v11=AddVertex(w\surface,0,0,0) w\v22=AddVertex(w\surface,2,-4,0) AddTriangle(w\surface,w\v11,w\v00,w\v22) UpdateNormals w\mesh w\x=MouseX() w\y=MouseY() w\tex=LoadTexture("Wand.png",2) EntityTexture w\mesh,w\tex End Function Wäre nett wenn ihr mir weiterhelfen könntet und ein paar tipps geben könntet. mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] PositionEntity cam,0,0,-1
... Code: [AUSKLAPPEN] w\v0=AddVertex(w\surface,0,0,0)
w\v1=AddVertex(w\surface,0,-4,0) w\v2=AddVertex(w\surface,2,-4,0) vielleicht weil die kamera im Objekt steckt? ^^ Koordinaten der Vertexes überschreiten die Z-Koord. (=-1) der Kamera weiß nicht obs darin liegt aber denkbar wärs ^^ |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß nicht, wie gut du in 3D bist. Wenn du nicht zumindest ein Halbgott bist, würd ich Draw3D nehmen. Spart dir eine Menge Zeit, uns eine Menge Nerven und die Ergebnisse sind aller Wahrscheinlichkeit nach besser. | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Single Surface System oder etwas ähnliches wäre am besten. (heisst mit CreateMesh, CreateSurface etc)
Mit Sprites hast du keine Chance. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber Draw3d ist doch nicht für Spiele geeignet, oder?
Da man keine kollisionen usw testen kann... was mein ihr? mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich hab mein trubadur auf spritebasis gebaut (natürlich mit ss erweitert...)
keinerlei probleme. kollision hab ich mir selber geschrieben (ist ja 2d, also mit rectsoverlap). mit draw3d kenn ich mich nicht direkt aus... |
||
Diese Signatur ist leer. |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du solltest auf jeden Fall Draw3D probieren. Auf Kollisionen testen geht auch mit den anderen Lösungen nicht direkt, hier musst Du selbst was schreiben. | ||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mit Draw3D sollte es eigentlich machbar sein und sonst, wenn du bereit bist dafür auch ein wenig zu bezahlen, mit SpriteCandy | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, Ich habe jetzt daas Problem gefunden.
Ich habe es ja an Mousex() und Mousey() positioniert. Da ich ja in 3d bin ist 900,500 leider nicht wie in 2d, sonder sehr weit aus dem Bildschirm raus^^ Wie bekomme ich jetzt die 2d koordinaten in 3d koordinaten? Also ich brauche nur x und y. Wie kann man das Umrechnen, oder gibts da nen Befehl? mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dazu gibts einen Artikel wo man die "0 Ebene" platzieren muss bzw. die Kamera, damit eine 3D Einheit = 1 Pixel.
schau ins FAQ & Tutorial Board bzw. nutz board suche. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Dreamora,
aber ich habe gerade alle 5 seiten des FAQ and Tutorials boards durchgeschaut aber nix gefunden. Wenn du mir einen Suchbegriff nennen könntest würde ich gerne nochmals suchen. Aber bei 0 Ebene usw hat er auch nix brauchbarers gefunden. Wäre nett mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch wenn ich von 3D wenig im Köpfchen hab, glaub ich mich zu erinnern, dass man die Kamera um die Hälfte der horizontalen Graphikauflösung verschieben muss (nach hinten) | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Eingeproggt: Dann ist es zwar schon besser, stimmt aber immer noch nicht richtig.
Kennt hier keiner die Richtige methode? Oder ist das so kompliziert? mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Jo0oker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du die 2D Koordinaten in die 3D koordinaten haben willst, dann nimm am besten die Pick befehle......
lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mas93 hat Folgendes geschrieben: @Eingeproggt: Dann ist es zwar schon besser, stimmt aber immer noch nicht richtig.
Kennt hier keiner die Richtige methode? Oder ist das so kompliziert? mfg mas93 Ist nicht kompliziert und wurde von vertex und anderen mehrfach im forum erklärt. Einfach danach suchen. Dazu wirst du allerdings den erweiterten suchmodus nehmen müssen da du ja nach mehreren worten suchen willst. Alternativ gibt es natürlich auch die simple variante: Ausprobieren ![]() Denn logischerweise muss es ein vielfaches / bruchteil der kamera auflösung sein. Was funktioniert denn genau nicht? (und könnte sein dass die kamera so weit weg sein muss wie die auflösungsbreite beträgt) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, ich hab mir jetzt mal die pickbefehle angeschaut, aber es will noch nicht richtig.
manchmal wird das objekt weiter rechts manchmal weiter links oder oben angezeigt. Irgendwas stimmt mit der berechnung noch nicht. Könnt ihr mir da weiterhelfen? Code: [AUSKLAPPEN] AppTitle"Jump n Beam" Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global mh Global auswahl Global back=CreateCube() ScaleEntity back,500,500,-200 EntityColor back,0,0,0 EntityPickMode back,2 Type wall Field x# Field y# Field brush Field mesh Field surface Field tex Field v0,v1,v2,v3 End Type cam=CreateCamera() PositionEntity cam,0,0,(-768/2) Repeat mh=MouseHit(1) entity=CameraPick(cam,MouseX(),MouseY()) ;HideEntity back If auswahl=0 And mh=1 Then w.wall=New wall w\mesh=CreateMesh() w\brush=CreateBrush() w\surface=CreateSurface(w\mesh,w\brush) w\v0=AddVertex(w\surface,-1,+3,0, 0,0) w\v1=AddVertex(w\surface,+1,+3,0, 1,0) w\v2=AddVertex(w\surface,+1,-3,0, 1,1) w\v3=AddVertex(w\surface,-1,-3,0, 0,1) AddTriangle(w\surface,w\v0,w\v1,w\v2) AddTriangle(w\surface,w\v2,w\v3,w\v0) UpdateNormals w\mesh EntityFX w\mesh,17 EntityBlend w\mesh,3 w\tex=LoadTexture("wand.png",2) EntityTexture w\mesh,w\tex ScaleEntity w\mesh,10,10,1 ;die koordinaten berechnen w\x=PickedX() w\y=PickedY() EndIf drawall() UpdateWorld RenderWorld ;Cls Text 20,80,Mx Text 20,40,"Pickedx: "+PickedX()+" Pickedy: "+PickedY()+" Entity: "+entity For w.wall=Each wall Text 20,20,w\mesh Next Flip Until KeyHit(1) End Function drawall() For w.wall=Each wall PositionEntity w\mesh,w\x,w\y,0,1 Next End Function mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
... so schwer ist das doch nicht
vergiss pick wenn du auf 2d machen willst! Code: [AUSKLAPPEN] graphics3d 800,600,0,2
setbuffer backbuffer() cam=createcamera() positionentity cam,0,0,-400 ;halbe bildschirmbreite (wurde gesagt!) cube=createcube() while not keyhit(1) updateworld : renderworld x3d=mousex()-400 ;mousex()-graphicswidth()/2 y3d=300-mousey() ;graphicsheight()/2-mousey() positionentity cube,x3d,y3d,0 flip 0 : cls wend : end fertig. |
||
Diese Signatur ist leer. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Darth Gamer,
Dass mit den mauskoordinaten abzeihen hab ich vergessen. Ich habe aber ein neues Problem. Ich will ja striche erstellen. Mit linkem mausklick wird der Startpunkt gesetzt und mit dem rechten der Endpunkt. Soo, das funktioniert auch, jedoch sind die Striche immer unterschiedlich breit. Das war mir auch klar, da es an dem code liegt. Könnt ihr mir sagen, wie ich das verbessern kann? So sieht es aus: Code: [AUSKLAPPEN] AppTitle"Jump n Beam" Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global mh Global auswahl Global active Global x3d,y3d Type wall Field x# Field y# Field x1# Field y1# Field brush Field mesh Field surface Field tex Field v0,v1,v2,v3 End Type Global cam=CreateCamera() PositionEntity cam,0,0,-512 Repeat x3d=MouseX()-512 ;mousex()-graphicswidth()/2 y3d=384-MouseY() ;graphicsheight()/2-mousey() If MouseHit(2) And active=1 Then w.wall=Last wall w\x1=x3d w\y1=y3d w\mesh=CreateMesh() w\brush=CreateBrush() w\surface=CreateSurface(w\mesh,w\brush) w\v0=AddVertex(w\surface,w\x-3,w\y,0, 0,0) w\v1=AddVertex(w\surface,w\x+3,w\y,0, 1,0) w\v2=AddVertex(w\surface,w\x1-3,w\y1,0, 1,1) w\v3=AddVertex(w\surface,w\x1+3,w\y1,0, 0,1) AddTriangle(w\surface,w\v0,w\v1,w\v3) AddTriangle(w\surface,w\v2,w\v3,w\v0) UpdateNormals w\mesh EntityFX w\mesh,17 EntityBlend w\mesh,3 ;w\tex=LoadTexture("wand.png",2) ;EntityTexture w\mesh,w\tex active=0 EndIf If MouseHit(1) And active=0 Then w.wall=New wall w\x=x3d w\y=y3d active=1 EndIf UpdateWorld RenderWorld tooltip() Flip Cls Until KeyHit(1) End Function tooltip() If active=0 Then Color 0,255,0 Text 8,20,"Linke Maustaste drücken um Startpunkt zu setzen" Color 255,255,255 If active=1 Then Color 0,255,0 Text 8,40,"Rechte Maustaste drücken um Endpunkt zu setzen" Color 255,255,255 Rect 5,12,382,48,0 End Function P.S.:Der code ist so umgeschrieben, dass ihr ihn ohne ressourcen ausführen könnt. Wäre nett wenn ihr mir helfen könntet. mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
relativ logisch warum das so aussieht...
du wählst deine 4 punkte immer gleich, also immer horizontal +-3, natürlich ist dann, wenn gedreht ist das auch +-3, und das gibt dann eben die schiefen dinger die du da hast. um das zu ändern müsstest du den vektor von punkt A zu B bilden (anfang und ende deiner planken da), und die normale dazu finden, diese normalisieren, und danach *gewünschte breite, dann A+-vektor (x UND y!) dann hast du schön gleichbreite planken. |
||
Diese Signatur ist leer. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke darth gamer für deine Antwort,aber ich verstehe nicht ganz wie du das meinst?
Wie soll ich den vektor nehmen und die normale finden? Wie meinst du das? mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group