Vertex Farben bestimmen
Übersicht

![]() |
DottakopfBetreff: Vertex Farben bestimmen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Blitzer!
irgendwie stell ich mich gerade ziemlich doof an... Ich möchte die Farbe eines Vertexpunktes eines gepickten Triangles ermitteln. Das ganze ist ein Mesh level mit einer Lightmapp. Nun versuche ich mittels vertexRed/vertexGreen/VertexBlue die Farbe eines Vertexpunktes unter dem Spieler zu ermitteln. Dies dient dazu das spieler mesh abhängig von der Bodenhelligkeit/umgebungslicht neu einzufärben. hier der Code der das können sollte: Code: [AUSKLAPPEN] If EntityPick(checkbox,2) <>0 Then triangle = PickedTriangle() surface = GetSurface(msh_level,1) vertex = TriangleVertex(surface,triangle,1) color_r = VertexRed(surface,vertex) color_g = VertexGreen(surface,vertex) color_b = VertexBlue(surface,vertex) End If dem levelmesh wurde bereit "EntityFX 2" zugewiesen. Ich bekomme immer nur für rot grün blau den wert 255(standart wert). Was mache ich falsch ? Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Mi, Feb 17, 2010 15:02, insgesamt einmal bearbeitet
mDave |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Genau dasselbe versuchte ich einst auch.
Aber leider, gibt er nicht die Farbe der Textur auf dem das Vertex liegt, sondern nur die Farbe, die man mit VertexColor festgelegt hat. Allerdings kannst du mal mit TextureBuffer herumspielen. |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
och ne etz ![]() wird das dann nicht etwas arg langsam ? ~Edit~ also könnte man rein theoretisch sowas machen : Code: [AUSKLAPPEN] color = ReadPixel(VertexU(surface , vertex ) , VertexV(surface , vertex ) das wäre dann aber nicht echtzeittauglich(denke ich), also müsste man es irgendwie mit einem Tool vorberechnen lassen und dann im Spiel mit vertexcolor den vertexen zuweisen. Irgendwie so ... ![]() |
||
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Einzelner Aufruf dauert ~2msec(lock/Unlock), also besser bei vielem benutzen vorher Locken, danach unlocken. Das sollte Echtzeit tauglich sein. (ReadPixelFast ist schneller als ReadPixel. Nur Lock/Unlockbuffer ist langsam ![]() |
||
Warbseite |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
wow danke !
ich doktor mir mal das mal zusammen, und meld mich dann nochmal !! ![]() Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn nur ein einzelnes Pixel ausgelesen wird, benutze einfach ReadPixel, ohne den Buffer zu locken.
Locken & ReadPixelFast ist nur sinnvoll, wenn viele Pixel ausgelesen werden. Das dürfte interessant für Dich sein: http://www.blitzbasic.com/code...p?code=515 |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm ich bekomme einen MAV, scheinbar hat er probleme mit dem Texture handle.
Mein Implementationsversuch: Code: [AUSKLAPPEN] If EntityPick(checkbox,4)<>0 Then surf=GetSurface(msh_level,1) vertex=TriangleVertex(surf,PickedTriangle(),1) ;gepicktes Vertex sb=GetSurfaceBrush(surf) tex=GetBrushTexture(sb,1) ;texturehandle ermitteln v_color = GetVertexTexel(surf,vertex,tex) End If Für mich sieht das so richtig aus, wo ist der Fehler ? Muss man evt. die Lightmapp "wirklich" laden und als Handle angeben ? @Big Bug, das sieht sehr gut aus! ich arbeite das gleich mal druch Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Abschnitt mit dem TextureHandle ermitteln sieht auf den ersten Blick eigentlich ganz gut aus. Vielleicht hast Du das falsche Surface erwischt?
Der unterste Texturlayer hat übrigens den Index 0, vielleicht ist ja auch das das Problem. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mir den namen mit Texturename des surfaces(brush) ausgeben lasse, bekomme ich die light map raus. Müsste somit auch richtig sein.
Das Level bestitz nur 1 Surface. Ist ja nur 1 Raum(1 Texture) mit 1 lichtquelle Ich lasse mir die Varraible tex welche den TextureBrush ermittelt mit text ausgeben, warum steigt dieser wert kontinuierlich an ?? Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
GetBrushTexture![]() Zitat: Nach Benutzung sollte diese Textur wieder mit FreeTexture gelöscht werden, um MemoryLeaks zu verhindern!
|
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group