Highmap + Skybox : Fragen
Übersicht

![]() |
ToeBBetreff: Highmap + Skybox : Fragen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich wollt jetzt nicht Fragen wie das geht ![]() Aber ich wollte mal wissen, es gibt ja in machen Strategiespielen die Kreise auf dem Boden um die ausgewählten spieler. Die Passen sich immer automatisch dem boden der Highmap an (also so also ob das auf die Map gemalt worden währe...). Das wollt ich auch mal versuchen, mit einem Sprite, aber das kann natürlich net klappen, denn das Sprite müsste ich ja verbiegen... Wisst ihr wie man das macht ? Zur SkyBox. Ich wollte zwei Skyboxen machen. Eine sichtbare und eine unsichtbare. Warum ? Die Sichtbare soll hinter der unsichtbaren sein bzw. sich mit dem Spieler bewegen. Also hat man einen schönen himmel. die unsichbare soll als Map-grenze dienen. Mit Kollision also. Nur damit man weiß, wie weit man fahren soll, habe ich mir überlegt (bzw. aus anderen Spielen genommen), das , wenn der Spieler in die nähe einer der 4 wände kommt, das dann so ein Gitternetz an der Playerposition auftaucht. (ist schwer zu erklären, villeicht find ich ja auch einen screen). Also ist es iwie möglich eine Texture nur an einer stelle anzeigen zu lassen ? Ich wollte das so machen, das ein Kreis gezeigt wird, und zwar immer an der Playerposition, wenn man die Position bis zu wand zieht, dann an der Stelle. Dieser Kreis soll je nach abstand unterschiedlich groß sein, aber er soll nicht einfach nur gescalt werden, sondern die Gitternetzgröße auf der Textur soll gleichbleiben, nur der kreis soll größer werden (am besten auch mit verschwimmung). Man muss da warscheinlich eine Texture drauflegen, die weiß ist und in einem Kreis frabverlauf auf schwarz übergeht. Weiß dann transparent machen (png) und dann einfach als zweiten Texture layer über die Texture legen. Aber wie kann ich das Schaffen das die Texture nicht gekachelt wird ? Ich hoffe ihr versteht mich ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Krischan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also das mit den "Sprites" würde ich so machen:
AlignToVector mesh,NX,NY,NZ,2,0.1 Wobei NX/Y/Z das jeweilige Vertexnormal des Terrains an der Position ist (kann man z.B. mit einem 90° Linepick nach unten herausfinden). Mein Zwerg aus Blitztiles klebt damit zumindest wie eine Klette am Terrain, auch wenn es mal 90° nach unten geht ![]() Hier die "Pickbelow" Funktion die ich dafür verwende (die NX/Y/Z sind global): Code: [AUSKLAPPEN] Function BT_PickBelow#(entity%,range#=10000,glob=False)
Local height# Local x#=EntityX(entity%,glob) Local y#=EntityY(entity%,glob) Local z#=EntityZ(entity%,glob) LinePick(x,y+range,z,0,-range*2,0) height=PickedY() BT_NX#=PickedNX() BT_NY#=PickedNY() BT_NZ#=PickedNZ() Return height End Function Die andere Frage hab ich nicht kapiert ![]() |
||
- Zuletzt bearbeitet von Krischan am Fr, Aug 14, 2009 17:22, insgesamt einmal bearbeitet
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, ich weiß, was du meinst. Du meinst unsichtbare Wände, und sobald der Spieler diesen Wänden nahe kommt, soll dort sozusagen ein Kreis mit einem Gitternetz erscheinen, oder? Vielleicht könnte man da ein Sprite mit Alpha-Mask verwenden. Ich weiß aber nicht, wie das geht oder wie das aussieht... ![]() |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest du das zweite bitte nochmal erklären, ich verstehe es auchnicht so ganz.
Ich verstehe nur, dass du irgendeine Textur auf eine bestimmte Stelle der unsichtbaren Wand anzeigen lassen willst. Dafür würde ich aber ein Sprite nehmen, das ist komfortabler und schneller ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Krischan : Nee so meinte ich das nicht. Ich wollte z.B. eine Gelben kresi um den Spieler malen lassen, und dieser Kreis soll so auf dem Boden liegen, als ob er darauf gemalt worden sein (also kein durchgängiger kreis nur ans Terrain "gedreht").
@Megamag : Genauso meine ich es. Ja ich hatte mir auch schon überlegt, eine Gitternetz Texture auf dei S"SkyBox" zu legen, die aber bis zum erscheinen des kreises unsichtbar zu halten (muss ich für jede seite einzeln machen). Dann nur noch ein Sprite wie beschrieben auf die Position malen und je nach abstand scallieren. muss mal gucken ob ichs hinbekomme ![]() @tankbuster : Sorry ich hab mein bestes getan , kann auch nicht besser formolieren ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: als ob er darauf gemalt worden sein
Dann mal ihn doch auf die Textur. |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
???
Das blöde daran ist, wenn die Texture gekachelt ist, wird gleich mehr als einmal gemalt, und ich müsste für sagen wir mal 100 einheiten alle aufd den Buffer malen (ist ja nicht so das es ein Kreis wie Oval ist, sondern er soll z.b. transparent sein, dicke umrandung und ausgefüllt , sprich ich will ein Image anzeigen lassen, vill. auch ein dreick welches sich in die richtung der Figur mitdreht). Außerdem muss ich die Texture gleich zweimal abspeichern, einaml das was angezigt wird und einmal das was ich über das gemalte drüber malen soll. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
MeikBetreff: Re: Highmap + Skybox : Fragen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ToeB hat Folgendes geschrieben: Also ich wollt jetzt nicht Fragen wie das geht
![]() Aber ich wollte mal wissen, es gibt ja in machen Strategiespielen die Kreise auf dem Boden um die ausgewählten spieler. Die Passen sich immer automatisch dem boden der Highmap an (also so also ob das auf die Map gemalt worden währe...). Das wollt ich auch mal versuchen, mit einem Sprite, aber das kann natürlich net klappen, denn das Sprite müsste ich ja verbiegen... Wisst ihr wie man das macht ? Also ich denke er meint sowas in der art: http://i64.photobucket.com/alb..._1_0_2.jpg Der "Kreis" passt sich halt den Boden an. ToeB hat Folgendes geschrieben: Zur SkyBox. Ich wollte zwei Skyboxen machen. Eine sichtbare und eine unsichtbare. Warum ? Die Sichtbare soll hinter der unsichtbaren sein bzw. sich mit dem Spieler bewegen. Also hat man einen schönen himmel. die unsichbare soll als Map-grenze dienen. Mit Kollision also. Nur damit man weiß, wie weit man fahren soll, habe ich mir überlegt (bzw. aus anderen Spielen genommen), das , wenn der Spieler in die nähe einer der 4 wände kommt, das dann so ein Gitternetz an der Playerposition auftaucht. (ist schwer zu erklären, villeicht find ich ja auch einen screen). Also ist es iwie möglich eine Texture nur an einer stelle anzeigen zu lassen ? Ich wollte das so machen, das ein Kreis gezeigt wird, und zwar immer an der Playerposition, wenn man die Position bis zu wand zieht, dann an der Stelle. Dieser Kreis soll je nach abstand unterschiedlich groß sein, aber er soll nicht einfach nur gescalt werden, sondern die Gitternetzgröße auf der Textur soll gleichbleiben, nur der kreis soll größer werden (am besten auch mit verschwimmung). Man muss da warscheinlich eine Texture drauflegen, die weiß ist und in einem Kreis frabverlauf auf schwarz übergeht. Weiß dann transparent machen (png) und dann einfach als zweiten Texture layer über die Texture legen. Aber wie kann ich das Schaffen das die Texture nicht gekachelt wird ?
Ich hoffe ihr versteht mich ![]() mfg ToeB Zum zweiten meint er glaube ich sowas wie im Spiel DGX9142 von Mr.Keks. https://www.blitzforum.de/gallery/953/ Wie man sowas jetzt aber umsetzt weiss ich leider nicht ![]() |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke !
Aber das zweite hast auch du leider falsch verstanden ![]() Ich erklärs jetzt nicht nochmal, steht ja oben ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ich habe mal schnell eine schlechte Skizze gemacht, damit man sich hier vorstellen kann, wie ToeB das Zweite meint:
(Ich hoffe, ich liege richtig und habe nicht auch falsch gedacht) |
||
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 1280,1024,32,1
c=CreateCamera() SetBuffer BackBuffer() Color 20,0,0 Rect 0,0,64,64 Color 255,0,0 Line 0,0,64,64 Line 64,0,0,64 tex=CreateTexture(64,64) CopyRect 0,0,64,64,0,0,BackBuffer(),TextureBuffer(tex) Local levelborderbox=createlevelborderbox(20,10,tex,20) Repeat lookx#=lookx#-MouseXSpeed()*0.1 looky#=looky#+MouseYSpeed()*0.1 MoveMouse 100,100 RotateEntity c,looky,lookx,0 MoveEntity c,0,0,(KeyDown(17)-KeyDown(31))*0.4 MoveEntity c,(-KeyDown(30)+KeyDown(32))*0.4,0,0 RenderWorld Flip 1 updatelevelborderbox(levelborderbox,c,8,12) Until KeyHit(1) ;kiste machen mit soundso vielen unterteilungen, keine grosse sache, oder? :P (ohne deckel übrigens, und quadratisch, size ist die seitenlänge) Function createlevelborderbox(size#,verts_per_side,texture,texture_repeat=1) Local m,s,y,x m=CreateMesh() b=CreateBrush() BrushTexture b,texture BrushFX b,1+2+32+16 BrushBlend b,3 s=CreateSurface(m,b) For q=0 To 3 For x=0 To verts_per_side For y=0 To verts_per_side Select q Case 0 AddVertex s,-size*0.5+(1.*size/verts_per_side)*x,-size*0.5+(1.*size/verts_per_side)*y,-size*0.5,texture_repeat*1.*x/verts_per_side,texture_repeat*1.*y/verts_per_side Case 1 AddVertex s,-size*0.5+(1.*size/verts_per_side)*x,-size*0.5+(1.*size/verts_per_side)*y,+size*0.5,texture_repeat*1.*x/verts_per_side,texture_repeat*1.*y/verts_per_side Case 2 AddVertex s,-size*0.5,-size*0.5+(1.*size/verts_per_side)*y,+size*0.5-(1.*size/verts_per_side)*x,texture_repeat*1.*x/verts_per_side,texture_repeat*1.*y/verts_per_side Case 3 AddVertex s,+size*0.5,-size*0.5+(1.*size/verts_per_side)*y,+size*0.5-(1.*size/verts_per_side)*x,texture_repeat*1.*x/verts_per_side,texture_repeat*1.*y/verts_per_side End Select If x>0 And y>0 Then AddTriangle s,q*(verts_per_side+1)^2+(verts_per_side+1)*x+y,q*(verts_per_side+1)^2+(verts_per_side+1)*(x-1)+y,q*(verts_per_side+1)^2+(verts_per_side+1)*x+y-1 AddTriangle s,q*(verts_per_side+1)^2+(verts_per_side+1)*(x-1)+y,q*(verts_per_side+1)^2+(verts_per_side+1)*(x-1)+y-1,q*(verts_per_side+1)^2+(verts_per_side+1)*x+y-1 EndIf Next Next Next UpdateNormals m Return m End Function ;alpha der vertices setzen, weiter entfernte bekommen kleinere alpha-werte Function updatelevelborderbox(levelboderbox,playerentity,visibility_inner_radius#,visibility_outer_radius#) s=GetSurface(levelboderbox,1) For z=0 To CountVertices(s)-1 distance_from_player#=Sqr((EntityX(playerentity)-VertexX(s,z))^2+(EntityY(playerentity)-VertexY(s,z))^2+(EntityZ(playerentity)-VertexZ(s,z))^2) alpha#=1-1.*((distance_from_player#)-visibility_inner_radius)/(visibility_outer_radius#-visibility_inner_radius) ;das ist jetzt ne formel welche bewirkt, dass die vertices sobald sie den inneren radius verlassen zu verblassen beginnen und ganz weg sind wenn sie den äusseren radius erreicht haben ;das ganze erfolgt linear, man könnte natürlich auch quadratisch ("plötzlicher") ausblenden oder so... VertexColor s,z,255,255,255,alpha# Next End Function sowas? |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
JAAA !!! Danke !!
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
bitte, gern...
kucks dir gut an dass dus dann selber auch kannst, meshbarbeitung/vertexalpha in bb ist etwas cooles und kann für einen haufen effekte (wasser/lichtstrahlen/laser etc) verwendet werden =) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group