Displacemapping von Vertex
Hi!
Ja ich schreibe gerade an einem Tutorial über Specialeffekte
in BB, und da ich displacemapping als erstes genommen habe,
poste ich hier mal den code. Ich lade dann noch gleich ein
Besipiel und 2 screenshots noch hoch:
[code:1:fcad372275]
Function EntityDisplace(Entity,Heighmap$)
Local Image,OldBuffer,Width,Height,MX#,MY#,MZ#
Local S,Surface,V,VX#,VY#,VZ#,PixelX,PixelY
Local RGBA,R,G,B,Durchschnitt,Faktor#,NX#,NY#,NZ#

OldBuffer = GraphicsBuffer()

If FileType(Heighmap$) <> 1 Then Return 0

Image = LoadImage(Heighmap$)
If Image = 0 Then Return 0

Width = ImageWidth(Image)
Height = ImageHeight(Image)

MX# = EntityX#(Entity)
MY# = EntityY#(Entity)
MZ# = EntityZ#(Entity)

SetBuffer ImageBuffer(Image)

For S = 1 To CountSurfaces(Entity)
Surface = GetSurface(Entity,S)
For V = 0 To CountVertices(Surface) - 1
VX# = VertexX#(Surface,V)
VY# = VertexY#(Surface,V)
VZ# = VertexZ#(Surface,V)
VU# = VertexU#(Surface,V)
VV# = VertexV#(Surface,V)

LockBuffer ImageBuffer(Image)
PixelX = VU# * Width
pixelY = VV# * Height
RGBA = ReadPixelFast(PixelX,PixelY)
R = (RGBA And $FF0000) / $10000
G = (RGBA And $FF00) / $100
B = (RGBA And $FF)
UnlockBuffer ImageBuffer(Image)

Durchschnitt = (R + G + B) / 3
Faktor# = Durchschnitt / (255.0 / 2)

NX# = MX# + ((VX# - MX#) * Faktor#)
NY# = MY# + ((VY# - MY#) * Faktor#)
NZ# = MZ# + ((VZ# - MZ#) * Faktor#)
VertexCoords Surface,V,NX#,NY#,NZ#
Next
Next
SetBuffer OldBuffer

UpdateNormals Entity
FreeImage Image

Return 1
End Function
[/code:1:fcad372275]
macht sich echt gut, wenn man z.B. nur einen
Sphere nimmt, kann man über heighmap ein gesicht
modellieren, ohne mit 3DMax oder Milkshape zu arbeiten.
Also einfach nur ein Gesicht zeichnen, und daraus
erstellt dann B3D ein fertiges Gesicht.
Leider bleibt immer ein veretx zu kurz, aber fällt nicht
gravierend auf unter den anderen 3967 vertices :D
mfg olli
===
von ???
Hi!
habe ich ja ganz vergessen...
naja habe mal zumindest nen video hochgeladen
http://mitglied.lycos.de/the_darkfuture/displace.zip
(3.65 MB *.mpg liegt bei)
das progg wozu ich zur aufzeichnung genommen habe,
hat das ding auf min. 15 FPS runtergedrückt :(
mfg olli



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: