Mehrere 3d-Fragen
Übersicht

JannikBetreff: Mehrere 3d-Fragen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie der Titel schon vermuten lässt (![]() 1. Wie kann man ein Bild (z.B. Fadenkreuz) im "Graphics3d"-Modus anzeigen lassen? Muss man adzu nochmal den normalen "Graphics"-Befehl nutzen? 2. Wenn man ein Terrain als Entity ansieht , hat dieses ja auch ein entitypitch, enityyaw und entityroll. Wenn ich nun möchte, dass ein Auto oder anderes Fahrzeug sich je nach der Steigung eines Terrains an der x-Achse dreht damit es realsitischer aussieht, wie geht das? muss ich da das "EntityRoll(terrain)" als Rotation an der x-Achse benutzen? 3. Kann man das machen, dass man mehrere Meshes , die die gleichen Eigenschaften haben (gleich groß, gleiche Gravitation) in einem Feld speichert und dann das gesamte Feld als Variable benutzen, auch wenn nur ein Mesh davon gerade bewegt oder verändert werden soll, und wenn ja wie? Vielen Dank schonmal jetzt ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zu 1.
Entweder benutzt man ein Sprite den man vor die Camera hängt Loadsprite ![]() ![]() 3. Ich verstehe nicht so ganz was du bewerkstelligen willst (Beispiel?), aber mit Types lässt sich das sicher einrichten. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Am einfachsten ganz normal mit DrawImage. Alles was Graphics kann, kann Graphics3D auch.
2. EntityPitch, -Yaw und -Roll geben dir nur die Rotation des ganzen Objektes, sagen aber über die Form des Objektes nichts aus. Wenn du die Steigung eines Terrains an einer bestimmten stelle ermitteln willst, könntest du dazu TerrainY benutzen (an 2 verschiedenen Punkten ausführen und den Rest selber errechnen). 3. Das verstehe ich nicht ganz. Du kannst Meshes in einem Feld abspeichern und dann eines davon ansprechen, aber was meinst du mit "das gesamte Feld als Variable benutzen"? |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Jannik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke an euch beide! Also ganz normal DrawImage hab ich schon probiert, werds jetzt mal mit DrawImage nach RenderWorld probieren...
Also zu 3. ... wenn man mehrere Meshes, die beweglich sind (z.B. Autos) bewegen will aber halt immer nur eins zur Zeit, oder mehrere aber natürlich in verschiedene Richtungen, ist es ja lästig, für jedes Auto bzw. Mesh ne eigene Schleife zu bauen. |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
warum ne eigene schleife
Code: [AUSKLAPPEN] type auto field entity end type for a.auto =each auto moveentity auto\entity,0.1,0.1,0.1 next |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Jannik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
leuchtet ein...aber was genau macht der type hier genau? und warum steh da for A.auto = each auto?
(noobige frage ![]() hab das jetzt mit der Steigung versucht, geht nicht, aber ich glaube das liegt vllt an nem mathematischen Fehler: Code: [AUSKLAPPEN] terrain_m1# = (TerrainY(terrain, EntityX(car1), EntityY(car1), EntityZ(car1)) - TerrainY(terrain, EntityX(cam), EntityY(cam), EntityZ(cam))) / (EntityX(car1) - EntityX(cam)) Tan(terrain_m1#) = terrain_m# RotateEntity car1, terrain_m#, 0, 0 dass ich für den 2. terrainy-punkt (cam) genommen hab liegt daran, dass meine Kamera hinter dem Auto hinterher fliegt. weis irgendein Mathegenie hier was falsch ist? ![]() |
||
- Zuletzt bearbeitet von Jannik am Mo, Feb 16, 2009 18:14, insgesamt einmal bearbeitet
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, um types zu verstehen solltest du am besten in der hilfe schaun oder dir anderswo ein tutorial reintun ![]() |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
am besten liest du ein Tutorial zu Types durch. ![]() Types sind Schablonen für Objekte. Ich weiss z.B., wie eine Orange aussieht, das muss aber nicht heissen das eine vor mir liegt. Mit irgendeinname.Orange = New Orange habe ich eine Orange mit dem Namen irgendeinname vor mir liegen. Es können auch mehrere gleichnamige Objekte vorliegen. Ein Type gibt vor, wie ein Objekt auszusehen hat, dies mit sogennanten "Fields", zu Deutsch "Feldern". Diese kann man dann in einer Objektinstanz beliebig ausfüllen. Damit ich alle Objekt-Instanzen eines Types durchgehen kann, gibt es "Each". Das heisst, ganz einfach, jedes. Somit heisst "For a.auto = Each auto" einfach, dass ich alle Autos durchgehe, und das aktuelle Auto heisst dann "a". Somit kann ich es dann auch ansprechen. Beispiel: Code: [AUSKLAPPEN] Type auto ;Unser Auto-Type Field karosserie ;Die Karosserie Field raeder[4] ;4 Räder End Type Graphics3D 800,600,32,2 boden = CreatePlane() ;Boden cam = CreateCamera() ;Kamera light = CreateLight() ;Licht PositionEntity cam, 0,5,5 ;Kamera positionieren PositionEntity light, 0,10,-10 ;Licht positionieren PointEntity cam, boden ;Kamera auf den Boden zielen lassen EntityColor boden, 100,100,100 ;Boden einfärben ;Hauptschleife While Not KeyHit(1) If KeyHit(57) ;Tastendruck 57 (Leertaste) abfragen a.auto = New auto ;Neue Auto-Instanz erstellen a\karosserie = CreateCube() ;Einen Würfel für die Karosserie erstellen ScaleEntity a\karosserie, 1,0.5,1.5 ;n'Auto ist ja nicht Würfelförmig, also etwas skalieren EntityColor a\karosserie, 255,0,0 ;Wer will schon kein Rotes Auto? For i = 1 To 4 ;Diese Schleife wird 4 mal ausgeführt a\raeder[i] = CreateCylinder() ;Das aktuelle Rad erstellen ScaleEntity a\raeder[i], 0.5,0.1,0.5 ;Räder sind ja nicht länglich, oder? RotateEntity a\raeder[i], 0,0,90 ;Rad richtig drehen EntityParent a\raeder[i], a\karosserie ;Jetzt gehört das Rad zur Karosserie, also wenn sich die Karosserie bewegt, bewegt sich auch das Rad EntityColor a\raeder[i], 50,50,50 ;Färbt noch die Räder. Next ;Nun werden wir die Räder auch richtig positionieren. PositionEntity a\raeder[1], 1.1,-0.25,-1.0 PositionEntity a\raeder[2], 1.1,-0.25,1.0 PositionEntity a\raeder[3], -1.1,-0.25,-1.0 PositionEntity a\raeder[4], -1.1,-0.25,1.0 ;Nun werden wir die Karosserie auch noch irgendwohin positionieren! Die Räder werden dank EntityParent mitbewegt, und behalten ihre relative Position bei! PositionEntity a\karosserie, Rand(0,10),1,Rand(0,10) EndIf If KeyHit(2) Then PointEntity cam, a\karosserie ;Rotiert die Kamera beim Tastendruck der Taste 1 zum letztgesetzten Auto EndIf RenderWorld Flip Cls Wend End Nutze es weise, junger Padawan. :p MfG |
||
Jannik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
möge die Macht mit dir sein The_Nici ![]() ![]() gut, das hat sich dann ja sozusagen geklärt, aber das mit der Steigung scheint komplizierter als erwartet. hab jetzt während des spielausführens mal den Wert terra_m1# angeguckt, und da steht "NAN". was heist das? ![]() |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
im Sample 'Driver' wird eine einfache Fahrzeugphysik erklärt. Das Sample befindet sich in <installationspfad>/samples/mak/driver/ MfG |
||
Jannik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey danke ![]() ![]() das ist ja super dass es da n sample gibt heftig...wie soll man diesen code verstehen?^^ Code: [AUSKLAPPEN] ;align car to wheels zx#=(EntityX( wheels[2],True )+EntityX( wheels[4],True ))/2 zx=zx-(EntityX( wheels[1],True )+EntityX( wheels[3],True ))/2 zy#=(EntityY( wheels[2],True )+EntityY( wheels[4],True ))/2 zy=zy-(EntityY( wheels[1],True )+EntityY( wheels[3],True ))/2 zz#=(EntityZ( wheels[2],True )+EntityZ( wheels[4],True ))/2 zz=zz-(EntityZ( wheels[1],True )+EntityZ( wheels[3],True ))/2 AlignToVector car,zx,zy,zz,1 zx#=(EntityX( wheels[1],True )+EntityX( wheels[2],True ))/2 zx=zx-(EntityX( wheels[3],True )+EntityX( wheels[4],True ))/2 zy#=(EntityY( wheels[1],True )+EntityY( wheels[2],True ))/2 zy=zy-(EntityY( wheels[3],True )+EntityY( wheels[4],True ))/2 zz#=(EntityZ( wheels[1],True )+EntityZ( wheels[2],True ))/2 zz=zz-(EntityZ( wheels[3],True )+EntityZ( wheels[4],True ))/2 AlignToVector car,zx,zy,zz,3 vorher wurde ein Feld errichtet dass alle 4 Räder (wheels) enthält: Code: [AUSKLAPPEN] Global wheels[4] cnt=1 For z#=1.5 To -1.5 Step -3 For x#=-1 To 1 Step 2 wheels[cnt]=CreateSphere( 8,car ) EntityAlpha wheels[cnt],.5 ScaleEntity wheels[cnt],.5,.5,.5 EntityRadius wheels[cnt],.5 PositionEntity wheels[cnt],x,0,z EntityType wheels[cnt],WHEEL cnt=cnt+1 Next Next |
||
norc |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Fremden Code zu verstehen ist immer etwas knifflig.
Schau dir auch mal Atan2 an, das ist geeignet, um aus einer Distanz einen Winkel zu berechnen, also z.B. aus Höhendifferenz der Auflagepunkte 2er Räder den Winkel des Chassis. Mit Types kann man viel falsch machen. Geh das langsam an und lies dir ein paar Tutorials dazu. EInfacher geht das mit normalen Arrays, z.B: Code: [AUSKLAPPEN] Dim a(10)
Dim speed#(10) for i=0 to 10 a(i)=loadmesh("auto.3ds") speed(i)=2 + rnd(1.0) next ... repeat for i=0 to 10 moveentity a(i),0,0,speed(i) next ... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group