Qudrate sollen immer gleich groß sein.
Übersicht

MatthiasBetreff: Qudrate sollen immer gleich groß sein. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay. Ich habe da mal wieder ein schwieriges Problem und hoffe nun auf Hilfe.
Also ich versuche gerade eine art Vertexeditor für Meshes zu machen. So das mann jeden Vertexpunkt verschieben kann. Dazu müssen die Vertexpunkte angezeigt werden. Dazu mache ich an jeder Vertexposition ein Quadrat. Nun möchte ich aber das sich die Quadrate zur Kamera ausrichten so wie Sprites es können. Nur die sind ja leider sowas von langsam das sie unnütze sind. Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 CameraRollV=CreatePivot() CameraRollH=CreatePivot(CameraRollV) Camera=CreateCamera(CameraRollH) CameraClsColor Camera,0,0,255 PositionEntity Camera,0,0,-10 Lischt=CreateLight() Plane=CreatePlane():EntityColor Plane,100,255,100 PositionEntity Plane,0,-1,0 Wurfel=CreateCube():EntityColor Wurfel,200,0,0 QuelSurf=GetSurface(Wurfel,1):Max3DPunkte=CountVertices(QuelSurf)-1 PunktMesh=CreateMesh():surf=CreateSurface(PunktMesh) EntityFX PunktMesh,17 SetBuffer BackBuffer() Repeat If KeyDown(203) TurnEntity CameraRollV,0,-1,0 If KeyDown(205) TurnEntity CameraRollV,0,1,0 If KeyDown(200) TurnEntity CameraRollH,1,0,0 If KeyDown(208) TurnEntity CameraRollH,-1,0,0 Gosub Zeige3DPunkte RenderWorld Flip Until KeyDown(1)=1 End .Zeige3DPunkte ClearSurface Surf G#=.1;"Quadratgröße" For I=0 To Max3DPunkte X#=VertexX(QuelSurf,I):Y#=VertexY(QuelSurf,I) Z#=VertexZ(QuelSurf,I) V0=AddVertex(surf,X-G,Y+G,Z) V1=AddVertex(surf,X+G,Y+G,Z) V2=AddVertex(surf,X+G,Y-G,Z) V3=AddVertex(surf,X-G,Y-G,Z) AddTriangle surf,V1,V0,V2 AddTriangle surf,V2,V0,V3 Next Return |
||
- Zuletzt bearbeitet von Matthias am Do, Apr 05, 2007 19:30, insgesamt 2-mal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soviel ich weiss können sich Objekte mit Pointentity zu nem anderen Entity drehen. | ||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da hast du recht. Das problem ist nur das es keine Objeckte/Entitys sind sondernt einzelne Quadrate die aus 4VertexPunkten und 2Triangles bestehen und in einem einzigen Surface vorkommen. | ||
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß, dass es auch eine Rechenvariante gibt, aber der einfachheit halber hab ich es, als ich so etwas zur Kamera drehen wollte, so gemacht:
1. Einen Punkt erstellen 2. Den Punkt dorthin setzen, wo die Mitte des "Sprites" (setze ich deshalb in Klammern, weil es eigentlich kein "richtiger" Sprite ist) sein soll. 3. Punkt zur Kamera drehen (ql:pointentity) 4. Mit Moveentity den Punkt verschieben, dann die Vertices auf die entsprechende Position stellen. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hilft dir das hier https://www.blitzforum.de/foru...mp;start=0 Es werden Quads erstellt, die immer zur Mitte (kann auch was anderes sein) zeigen.
Interessant dafür ist: Code: [AUSKLAPPEN] ;Hilfs-Positionen
ssb_p0=CreatePivot() ssb_p1=CreatePivot(ssb_p0) ssb_p2=CreatePivot(ssb_p0) ssb_p3=CreatePivot(ssb_p0) ssb_p4=CreatePivot(ssb_p0) ;Hilfs-Formationen PositionEntity ssb_p1,0,+1,0 PositionEntity ssb_p2,-1,0,0 PositionEntity ssb_p3,0,-1,0 PositionEntity ssb_p4,+1,0,0 Und später bei der Anwendung: Code: [AUSKLAPPEN] PositionEntity ssb_p0,X,Y,Z
PointEntity ssb_p0,camera Es lassen sich dann alle Vertexpositionen anhand der Pivotpositionen vergeben. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für deinen Tipp. Habe aber gerade ebend eine Superlösung gefunden. Die ist einfach nur genjal und sau schnell.
https://www.blitzforum.de/foru...ausrichten Drozdem vielen dank. |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So nun richten sich endlich die Quatrate zur Camera aus, und schon tut sich das näste Problem auf. Und zwar will ich gerne das die Quadrate immer gleich groß sind egal ob ich ran oder weg Zoome. Hat da jemand vieleicht eine Idee wie mann das anstellen kann?
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 CameraRollV=CreatePivot() CameraRollH=CreatePivot(CameraRollV) Camera=CreateCamera(CameraRollH) CameraClsColor Camera,0,0,255 PositionEntity Camera,0,0,-10 Lischt=CreateLight() Plane=CreatePlane():EntityColor Plane,100,255,100 PositionEntity Plane,0,-1,0 Wurfel=CreateCube():EntityColor Wurfel,200,0,0 QuelSurf=GetSurface(Wurfel,1):Max3DPunkte=CountVertices(QuelSurf)-1 PunktMesh=CreateMesh():surf=CreateSurface(PunktMesh) EntityFX PunktMesh,17 AppTitle "Q/A=Zoomen" SetBuffer BackBuffer() Repeat If KeyDown(203) TurnEntity CameraRollV,0,-1,0 If KeyDown(205) TurnEntity CameraRollV,0,1,0 If KeyDown(200) TurnEntity CameraRollH,1,0,0 If KeyDown(208) TurnEntity CameraRollH,-1,0,0 If KeyDown(16) MoveEntity Camera,0,0,.1 If KeyDown(30) MoveEntity Camera,0,0,-.1 Gosub Zeige3DPunkte RenderWorld Flip Until KeyDown(1)=1 End .Zeige3DPunkte ClearSurface Surf Gr#=.1;"Quadratgröße" For I=0 To Max3DPunkte X#=VertexX(QuelSurf,I):Y#=VertexY(QuelSurf,I) Z#=VertexZ(QuelSurf,I) ;---Von Mr.Keks TFormVector Gr#,-Gr#,0,camera,0 vx1# = TFormedX#() vy1# = TFormedY#() vz1# = TFormedZ#() TFormVector -Gr#,-Gr#,0,camera,0 vx2# = TFormedX#() vy2# = TFormedY#() vz2# = TFormedZ#() TFormVector Gr#,Gr#,0,camera,0 vx3# = TFormedX#() vy3# = TFormedY#() vz3# = TFormedZ#() TFormVector -Gr#,Gr#,0,camera,0 vx4# = TFormedX#() vy4# = TFormedY#() vz4# = TFormedZ#() v1 = AddVertex(surf,x#+vx1#,y#+vy1#,z#+vz1#,1,1) v2 = AddVertex(surf,x#+vx2#,y#+vy2#,z#+vz2#,0,1) v3 = AddVertex(surf,x#+vx3#,y#+vy3#,z#+vz3#,1,0) v4 = AddVertex(surf,x#+vx4#,y#+vy4#,z#+vz4#,0,0) AddTriangle(surf,v1,v2,v3) AddTriangle(surf,v2,v4,v3) Next Return |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Position ermitteln und ql:Rect benutzen
oder (doppelte Entfernung = doppelt so groß skallieren (siehe dazu ql:EntityDistance)) |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group