rotierende Kugeln
Übersicht

NetsharkBetreff: rotierende Kugeln |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe zwei Kugeln importiert K1, die große Kugel und K2 die Kleine Kugel.
Nun soll K1 an der Innenseite von K2 entlangrollen und zwar so, dass das mit der Lauffläche auch realistisch ist. Wie macht man das? Hat jemand einen Tipp? |
||
Netshark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das Problem dabei ist wohl auch die Schwerkraft, die immer mach außen gerichtet sein soll. | ||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay Netshake
Hast du eigentlich schon mal an die Kollisions Bewhle gedacht? |
||
Netshark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, aber hilft mir das da weiter? wie rollen kugeln ohne einfluss von schwerkraft oder masse? | ||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast mich ziemlich neugirig gemacht das ist doch mal ne Herausfoderung
bin schon fleißig beim Proggen. |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay ich habe mal schnell was geprogt vieleicht hift dir das.
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 Cam=CreateCamera():Lis=CreateLight():Piv=CreatePivot() CameraClsColor Cam,0,0,255:CameraRange Cam,1,10000 Tex=CreateTexture(256,256):SetBuffer TextureBuffer(Tex) Radius=50 Color 120,120,120:Rect 0,0,256,256 For Z=0 To 15 Step 2:Color 160,160,160 Rect 0,Z*16,16,16:Next:Image=CreateImage(256,256):GrabImage Image,0,0 For Z=0 To 15 Step 2 DrawImage Image,Z*16,0 Next PositionEntity Cam,0,0,-10 K1=CreateSphere(32) K2=CreateSphere(32,Piv) PositionEntity K2,0,0,Radius ScaleEntity K1,Radius,Radius,Radius FlipMesh K1 EntityTexture K1,Tex Repeat: TurnEntity Piv,0,-1,0 If KeyDown(203)=1 Then TurnEntity K1,0,-1,0 If KeyDown(205)=1 Then TurnEntity K1,0,1,0 RenderWorld Flip Until KeyDown(1)=1 End |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Spart euch bitte die Doppelpostings, dafür gibts den Edit-Button. Und die Ciodetags sind auch zum Nutzen vorgesehen ![]() Werds jetzt noch editieren, in Zukunft bitte selbst dran denken. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
RobertR |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Matthias,
ich sitze mit Netshark am gleichen Problem! Also was du programmiert hast, sieht genau so aus, wie das, was wir brauchen! Vielen Dank! |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay Kannst du mir sagen für was man so etwas brauch?
Wollt ihr einb Rollet spiel machen oder was? Gruß Matthias Tipp: Map Installer |
||
RobertR |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, ja wir wollen fürs Studium ein Spiel entwickeln (also mehr nen Entwurf) Man soll dann später über Löcher zwischen den Kugeln wandern können. Dabei gehts dann auch noch in Richtung --> mehrere innere Kugeln, verschachtelungen, Kollisionen usw.
Wir haben da noch bissl was vor uns! ![]() |
||
Netshark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dank Dir Matthias!
Hab Dein Skript ausprobiert und K1 durch ein Mesh ersetzt. Dabei habe ich gesehen, dass die Kugel nicht rollt, sondern immer gleich ausgerichtet bleibt. Bietet Blitz da eine Möglichkeit das Abrollen zu simulieren, oder muss man die Geschwindigkeit der Eigenrotation durch Ausprobieren manuell einstellen? |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das ist natürlich Klar.
Bei einem Mesh das nicht Kugelförmig ist kann das auch nicht fuktionieren. Das ist nur eine Optiche lösung. Must du wohl für dein Studium doch ein Paar Figer mehr bewegen. Also Ich Würde Die XYZ werte von K2(kleineKugel) Relatief zum Pivot messen ,und mal 2 rechnen dann Prüfen mit EntityColi..... und wenn eine Kollision vorligt die Wert wieder durch 2 rechnen. so ungefär Oder du Schaust dir mall die Collisions Befehle an da gibt es einen mit drauf Sliden als parameter Also soetwas habe ich selbst noch nicht ausprobiert. Deshalb alles ohne Gewähr. |
||
Netshark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Heißt das, ich kann keine in Maya "selbstgebauten" Kugeln importieren, die sich dann entsprechend drehen, sondern muss in diesem Fall die Rotationsbewegung des Meshes selbst steuern? Oder habe ich Dich falsch verstanden?
Ein anderes Problem ist, dass ich mit meiner Kamera immer y Einheiten über der K2-Oberfläche schweben will und zwar immer senkrecht, wie eben die Perspektive einer Fliege wäre. Hast Du da einen Ansatzpunkt? Die Egoshooter-Perspektive habe ich schon: Code: [AUSKLAPPEN] ;Relative Mausbewegung holen x= MouseXSpeed() y= MouseYSpeed() ;Blickwinkel der Kamera veraendern TurnEntity camera, y, -x, 0 ;Mauscursor in die Mitte setzen MoveMouse 400,300 ;Tastatur links gieren If KeyDown(203) Then MoveEntity camera, -0.3, 0, 0 ;Tastatur rechts gieren If KeyDown(205) Then MoveEntity camera, 0.3, 0, 0 ;Tastatur vor If KeyDown(200) Then MoveEntity camera, 0, 0, 0.3 ;Tastatur zurueck If KeyDown(208) Then MoveEntity camera, 0, 0, -0.3 |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schade Das ich das Prg. Maya nicht kenne, aber du kannst nur 3ds,x,B3D,MD2 datein laden. Lade mal bitte datei die du als mesh benutzen wilst im Archiv hoch damit ich mall sehen kann wie viele eken und kannten das ding hat. Habe das Prg. mus ich mal selber testen das Problem. | ||
Netshark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe ich gemacht. Um Maya nutzen zu können, konvertiere ich die Dateien mit "DeepExploration" ins 3ds-Format. Das ist auch nur ein Prototyp, die beiden Löcher in der Kugel müssen sein. | ||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 MaxHin=20 Dim Hinder(MaxHin) Piv=CreatePivot() Cam=CreateCamera(Piv):Lis=CreateLight() Pla=CreatePlane() PositionEntity Piv,0,10,0:Mit=CreateCylinder(32,1,Piv): RotateEntity Mit,90,0,0:ScaleEntity Mit,1,8,1:EntityAlpha Mit,.1 PositionEntity Cam,0,0,-10 CameraRange Cam,1,5000 CameraClsColor Cam,0,0,255:TurnEntity Lis,90,0,0 EntityColor Pla,0,150,0 For ZZ=0 To MaxHin-1:Hinder(ZZ)=CreateCube():ScaleEntity Hinder(ZZ),Rnd(1,20),Rnd(1,20),Rnd(1,20) EntityColor Hinder(ZZ),Rnd(100,255),Rnd(100,255),Rnd(100,255) PositionEntity Hinder(ZZ),Rnd(200),Rnd(10),Rnd(200) :Next Repeat: Select KeyDown(200):Case 1:MoveEntity Piv,0,0,1:End Select Select KeyDown(208):Case 1:MoveEntity Piv,0,0,-1:End Select Select KeyDown(203):Case 1:TurnEntity Piv,0,1,0:End Select Select KeyDown(205):Case 1:TurnEntity Piv,0,-1,0:End Select PositionEntity Piv,EntityX(Piv),5,EntityZ(Piv) Repeat:ColJa=0 For Z=0 To MaxHin-1 Select MeshesIntersect(Mit,Hinder(Z)):Case 1:MoveEntity Piv,0,1,0:ColJa=1:End Select Next Until ColJa=0 RenderWorld Flip Until KeyDown(1)=1:End Ich hasse If |
||
Netshark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok - habe Deinen Code ausprobiert und ihn auch soweit verstanden. Allerdings kann ich ihn nicht auf die gekrümmte Oberfläche meiner Kamera umsetzen, das ist doch etwas anderes als nur eine Ebene.
Außerdem brauche ich immer die richtige Ausrichtung der Kamera - wie eine Fliege, die in der Kugel rumläuft. Mein Code bisher: Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 camera=CreateCamera():Lis=CreateLight():Piv=CreatePivot() ;Mauszeiger verstecken HidePointer CameraClsColor camera,0,0,255:CameraRange camera,1,10000 Tex=CreateTexture(256,256):SetBuffer TextureBuffer(Tex) Radius=100 Color 120,120,120:Rect 0,0,256,256 For Z=0 To 15 Step 2:Color 160,160,160 Rect 0,Z*16,16,16:Next:Image=CreateImage(256,256):GrabImage Image,0,0 For Z=0 To 15 Step 2 DrawImage Image,Z*16,0 Next PositionEntity camera,0,0,-10 K1=CreateSphere(32) Global K2=LoadMesh( "kugel2.3ds",Piv ) PositionEntity K2,0,0,Radius ScaleEntity K1,Radius,Radius,Radius ScaleEntity K2, 2,2,2 FlipMesh K1 EntityTexture K1,Tex While Not KeyHit(1) ;TODO: Spieler bewegt sich nur auf Kugelinnenseiten und steht senkrecht ;Relative Mausbewegung holen x= MouseXSpeed() y= MouseYSpeed() ;Blickwinkel der Kamera veraendern TurnEntity camera, y, -x, 0 ;Mauscursor in die Mitte setzen MoveMouse 400,300 ;Tastatur links gieren If KeyDown(203) Then MoveEntity camera, -0.3, 0, 0 ;Tastatur rechts gieren If KeyDown(205) Then MoveEntity camera, 0.3, 0, 0 ;Tastatur vor If KeyDown(200) Then MoveEntity camera, 0, 0, 0.3 ;Tastatur zurueck If KeyDown(208) Then MoveEntity camera, 0, 0, -0.3 ;Kugel rotieren TurnEntity Piv,0,-1,0 UpdateWorld RenderWorld Flip Wend End |
||
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
hab mich spaßeshalber auch mal dran versucht... ![]() Folgendes ist bei rausgekommen: Code: [AUSKLAPPEN] Graphics3D 640,480,16 SetBuffer BackBuffer() Const radius = 100 ;textur Tex=CreateTexture(256,256):SetBuffer TextureBuffer(Tex) Color 120,120,120:Rect 0,0,256,256 For Z=0 To 15 Step 2:Color 160,160,160 Rect 0,Z*16,16,16:Next:Image=CreateImage(256,256):GrabImage Image,0,0 For Z=0 To 15 Step 2 DrawImage Image,Z*16,0 Next SetBuffer BackBuffer() ;Kugel bli=CreateSphere(64) ScaleEntity bli,Radius,Radius,Radius EntityColor bli,Rand(0,255),Rand(0,255),Rand(0,255) FlipMesh bli EntityTexture bli,tex ;Licht light = CreateLight(1) TurnEntity light,25,00,0 PositionEntity light ,0,1,-1 ;Camera camera = CreateCamera() PositionEntity camera,0,0,0 TurnEntity camera,25,0,0 ;Spieler player = CreatePivot() plKugel=CreateSphere() EntityTexture plKugel,tex PositionEntity plKugel,0,.75,0 EntityParent plKugel,player EntityParent light ,player While Not KeyHit(1) ;Spielergravitation nach außen MoveEntity player,0,-1,0 If EntityDistance(player,bli)>Radius Then MoveEntity player,0,1,0 EndIf ;Kameraausrichten PositionEntity camera,EntityX(player),EntityY(player)+4,EntityZ(player)-10 RotateEntity camera,10,0,0 ;Bewegen If KeyDown (203) Then TurnEntity bli,0,1,0 ,1 If KeyDown (205) Then TurnEntity bli,0,-1,0,1 If KeyDown (200) Then TurnEntity bli,.5,0,0 ,1 TurnEntity plKugel,5,0,0 EndIf If KeyDown (208) Then TurnEntity bli,-.5,0,0,1 TurnEntity plKugel,-5,0,0 EndIf If KeyDown(57) Then count=count+1 SpeedX = SpeedX + aX*(0.01666*count) SpeedY = SpeedY + aY*(0.01666*count) SpeedZ = SpeedZ + aZ*(0.01666*count) Else count=0 EndIf UpdateWorld RenderWorld Flip Wend End Lauffläche ist zwar nicht richtig, aber man muß ja eigendlich nur noch das richtige Rotationsverhältnis ausrechnen... ![]() |
||
RobertR |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Bizar98,
schaut gut aus, ist aber bissl geschummelt, da die kleine kugel ja nicht rollt, sondern beide kugeln "an einander lang rotieren". Man bekommt dann ein Problem, wenn man mehrere Kugeln rollen lassen will. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group