How to Make a Quad pont at Camera

Blitz3D Forums/Blitz3D Programming/How to Make a Quad pont at Camera

Wings(Posted 2007) [#1]
Hi

I have a problem with my own tree system
i am going to create a single surface leaf. instead of sprite i use Quads aka 2 triangles merged to a rectangle freemoving.


problem i have i have no idea how to make the quad always point at camera. i cant use turn entity cause there is not entity for each leaf.


Type Leaf
Field surface
field x#,y#,z#
field vert1
field vert2
field vert3
field vert4
end type

now how do i make it point to camera :(


bytecode77(Posted 2007) [#2]
i am at work/school right now. when i get home, i will show you how. it basicaly works with tformpoints.


bytecode77(Posted 2007) [#3]
sx# = size x
sy# = size y
		piv = CreatePivot()
		RotateEntity piv, >>Rotation of the camera<<
		TFormVector sx#, -sy#, 0, piv, 0
		v1x# = TFormedX() + x#
		v1y# = TFormedY() + y#
		v1z# = TFormedZ() + z#
		TFormVector -sx#, -sy#, 0, piv, 0
		v2x# = TFormedX() + x#
		v2y# = TFormedY() + y#
		v2z# = TFormedZ() + z#
		TFormVector sx#, sy#, 0, piv, 0
		v3x# = TFormedX() + x#
		v3y# = TFormedY() + y#
		v3z# = TFormedZ() + z#
		TFormVector -sx#, sy#, 0, piv, 0
		v4x# = TFormedX() + x#
		v4y# = TFormedY() + y#
		v4z# = TFormedZ() + z#


here ya go :)


Stevie G(Posted 2007) [#4]
You only need 2 x tforms here. I'll post details later.


Wings(Posted 2007) [#5]
Good

this is dmm realy usfull instructions Devil...

ill await for you stevie G


Stevie G(Posted 2007) [#6]
This is the kinda thing I use. It should be a fair bit faster with alot of particles ...

;p\size = size of particle ( assume square )
;p\Vertex = First vertex of 4 For this quad
;p\Pos = 3d coords of particle
;s = surface of particle mesh

;point quad to face the camera
TFormVector -p\size,0,0, Camera , 0
x1# = TFormedX()
y1# = TFormedY()
z1# = TFormedZ()
TFormVector 0,-p\size,0,Camera, 0
x2# = TFormedX()
y2# = TFormedY()
z2# = TFormedZ()
VertexCoords s, p\Vertex + 0 , p\Pos\x - x1 - x2 , p\Pos\y - y1 - y2 , p\Pos\z - z1 - z2
VertexCoords s, p\Vertex + 1 , p\Pos\x - x1 + x2 , p\Pos\y - y1 + y2 , p\Pos\z - z1 + z2
VertexCoords s, p\Vertex + 2 , p\Pos\x + x1 + x2 , p\Pos\y + y1 + y2 , p\Pos\z + z1 + z2
VertexCoords s, p\Vertex + 3 , p\Pos\x + x1 - x2 , p\Pos\y + y1 - y2 , p\Pos\z + z1 - z2



Wings(Posted 2007) [#7]
thanks Stevie G

that realy want i wanted.

i give it test run now..


Wings(Posted 2007) [#8]
And here is ressult code


Quick and dirty codeing here.
[CODE]
mesh=CreateMesh()
surface=CreateSurface(mesh)
p.quad = New quad
p\s=surface
p\size#=1
p\posx=0
p\posy=0
p\posz=5
p\Vertex=AddVertex(p\s,0,0,0,0,0)
AddVertex(p\s,1,0,0,1,0)
AddVertex(p\s,1,1,0,1,1)
AddVertex(p\s,0,1,0,0,1)

AddTriangle p\s,0,1,2
AddTriangle p\s,0,2,3



While Not KeyHit(1)


;p\size = size of particle ( assume square )
;p\Vertex = First vertex of 4 For this quad
;p\Pos = 3d coords of particle
;s = surface of particle mesh

;point quad to face the camera
p.quad = First quad
s=p\s
TFormVector -p\size,0,0, Camera , 0
x1# = TFormedX()
y1# = TFormedY()
z1# = TFormedZ()
TFormVector 0,-p\size,0,Camera, 0
x2# = TFormedX()
y2# = TFormedY()
z2# = TFormedZ()
VertexCoords s, p\Vertex + 0 , p\Posx - x1 - x2 , p\Posy - y1 - y2 , p\Posz - z1 - z2
VertexCoords s, p\Vertex + 1 , p\Posx - x1 + x2 , p\Posy - y1 + y2 , p\Posz - z1 + z2
VertexCoords s, p\Vertex + 2 , p\Posx + x1 + x2 , p\Posy + y1 + y2 , p\Posz + z1 + z2
VertexCoords s, p\Vertex + 3 , p\Posx + x1 - x2 , p\Posy + y1 - y2 , p\Posz + z1 - z2








TurnEntity camera,0,0.1,0






UpdateWorld()
RenderWorld()
Flip
Wend
[\CODE]

Thanks every one.. now i can continue to write voidrpg.