Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
1 registered members (TipmyPip), 18,449 guests, and 6 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 3 1 2 3
hit.u1, hit.u2 #229078
09/24/08 12:03
09/24/08 12:03

M
mercuryus OP
Unregistered
mercuryus OP
Unregistered
M



hit.x/y/z and hit.u/v returns the world coordinates so when a model is not world centered and/or rotated the hit.u/v values after a trace make no sense to me.

How can I calculate the real texture coordinates after a c_trace hit a rotated/moved model?

The values for hit.v.u1 / hit.v.v1 I do not understand as well.

Re: hit.u1, hit.u2 [Re: ] #229083
09/24/08 12:10
09/24/08 12:10
Joined: Jul 2000
Posts: 28,024
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 28,024
Frankfurt
hit.v is a standard DirectX vertex in the format defined in atypes.h. DirectX uses a 0..1 texture coordinate range, while hit.u1,v1 contain texture coordinates in pixels. All this has nothing to do with "World coordinates".

Re: hit.u1, hit.u2 [Re: jcl] #229109
09/24/08 15:43
09/24/08 15:43

M
mercuryus OP
Unregistered
mercuryus OP
Unregistered
M



OK - thats fine.
But it doesn't answer my question at all.

My main problem is that I do not know how to determine the correct pixels.

detailed description:

I c_trace from the mouspointer to a facing (90°) model and get the right coordinates with the hit-values.
Then I rotate the model and the resulting pixel coordinates of the models textures are "wrong".
So the returning hit-values seem to be related to the models/faces angles/position.
Maybe there is a "secret trick" to calculate the proper coordinates (I please want to know) or it is simply still a bug.




(hit.x/y/z should be -32/32/0 - but this can be calculated)
(hit.u1/v1 should definitly be 0/0)

Also hit and target vector are always the same.




Re: hit.u1, hit.u2 [Re: ] #229189
09/25/08 11:05
09/25/08 11:05
Joined: Jul 2000
Posts: 28,024
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 28,024
Frankfurt
When you rotate an entity, of course you'll get different UV coordinates of the hit point. XYZ are normally also different.

So I admit I do not understand what you do not understand.

Re: hit.u1, hit.u2 [Re: jcl] #229190
09/25/08 11:27
09/25/08 11:27

M
mercuryus OP
Unregistered
mercuryus OP
Unregistered
M



Sorry but I have to switch to german (native language)...

Was ich benötige ist das Pixel(x/y) der Textur eines Modelles.
Die Textur dreht sich mit den Modell mit.
Also habe ich (in o.g. Beispiel) Pixel 0/0 der Textur an der oberen linken Ecke des Modelles.

Dieses bekomme ich auch über hit.u1/v1 zurück, wenn ich auf die linke obere Ecke des Modelles trace (und das Modell pan/tilt/roll/x/y/z = 0/0/0/0/0/0 orientiert ist)

Drehe ich nun das Modell (und mit sich die Textur) und ich trace auf die linke obere Ecke des Modelles bekomme ich nicht 0/0 für hit.u1/v1, sondern einen für mich nicht erkennbaren Wert.

Wenn ich jedoch z.B. auf eine Textur zeichnen möchte, kann ich bei gedrehten Modellen nicht die Textur-Pixelkoordinaten ermitteln.

Möglicherweise verstehe ich den Sinn von hit.u1/v1 nicht - dann erklären Sie bitte, was die Werte repräsentieren und wozu ich sie verwenden kann.
Zudem würde ich mich über einen Hinweis zur Lösung meines Problemes (seit Januar2008) freuen.

Re: hit.u1, hit.u2 [Re: jcl] #229191
09/25/08 11:33
09/25/08 11:33
Joined: Mar 2007
Posts: 1,852
A
alpha_strike Offline
Serious User
alpha_strike  Offline
Serious User
A

Joined: Mar 2007
Posts: 1,852
ich glaube, er will die Texturkoordinate haben. Das Problem hatte ich auch mal.

Mein Vorhaben war, auf die Textur an der Aufschlagsfläche eine Wunde zu zeichnen. Zu einer Zeit, bevor das decal-System rauskam.

Das bedeutet, wenn ich auf eine Fläche trace, bekomme ich den Aufschlagsvector in den Weltkoordinaten. Die Koordinaten x y auf der Textur sollten dann aber immer, unabhängig von der Ausrichtung der Entity, das gleiche Ergebnis liefern.

Beispiel:
Ich treffe auf das Polyon xyz der getroffenen Entity. Der Rückgabewert ist der Vector xyz. Ich lasse an diesem Vector Blut per Partikel ausströhmen. Und zwar auch noch nachdem sich die Entity weiter bewegt. Dazu speichere ich z.B. den nächsten Vertexpunkt ab und berechne diesen immer wieder neu.

Auf die Texturposition, über die das Trefferpolygon liegt, möchte ich einen Blutfleck zeichnen. Koordinaten X / Y. Egal wie sich die Entity bewegt - die Koordinaten für Textur, über die das Teffer-Polygon platziert ist - bleiben immer gleich.

Re: hit.u1, hit.u2 [Re: alpha_strike] #229193
09/25/08 12:55
09/25/08 12:55
Joined: Jul 2000
Posts: 28,024
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 28,024
Frankfurt
Das ist richtig: Die Texturkoordinaten sind gleich, wenn Sie auf die gleiche Stelle der Textur tracen. Sie bleiben jedoch nicht gleich, wenn Sie in die gleiche Richtung tracen und das Modell drehen, da Sie dann ja andere Textur-Stellen treffen.

"Weltkoordinaten" bezieht sich auf ein globales 3D-Koordinatensystem. Da Texturkoordinaten zweidimensional und lokal sind, gibt es hier keine "Weltkoordinaten".

Die hit.u1/v1 Koordinaten geben die getroffene Texturstelle wieder. Sie werden z.B. von der Engine verwendet, um per ent_decal auf die Textur an der getroffenen Stelle ein Decal zu zeichnen. Sie können auch selbst per pixel_to_bmap an der getroffenen Stelle etwas auf die Textur zeichnen. Wie die Entity dabei gedreht ist, sollte egal sein.

Re: hit.u1, hit.u2 [Re: jcl] #229194
09/25/08 13:15
09/25/08 13:15
Joined: Mar 2007
Posts: 1,852
A
alpha_strike Offline
Serious User
alpha_strike  Offline
Serious User
A

Joined: Mar 2007
Posts: 1,852
Zum Zeitpunkt, als ich diese Frage formulierte, gab es noch nicht die Rückgabewerte der Texturkoordinaten. Darum war eine Veränderung der Textur an der ensprechenden, getroffenen Polygonstelle nicht ohne größere Workarounds möglich.

Jetzt liefert die trace-Funktion zusätzlich noch die Textur-Koordinaten zurück, die man bei Bedarf abspeichern kann.


Wenn ich die Bilder anschaue, dann stellen die Koordinaten xyz den Treffer-Vektor dar.
Und u1 und v1 vermutlich die Textur Position X und Y.

Nehme ich an, daß das getroffende Polygon die Textur (bitmap) von X=0 bis X=100 und y=0 bis y=100 abdeckt, also 100*100 Pixel - dann müsste ich (egal, wie ich die Entity drehe und platziere) bei tracen derselben Stelle haargenau wieder die gleichen Werte für u und für v bekommen.

In den dargestellten Bildern bekomme ich aber andere Koordinaten ... obwohl die gleich Position am Modell getroffen wird.

Wenn ich das richtig verstanden habe, dann hat der Anwender zwar sein Modell um 15 Grad geneigt, aber er zielt auf haargenau die gleiche Stelle??

Last edited by alpha_strike; 09/25/08 13:22.
Re: hit.u1, hit.u2 [Re: alpha_strike] #229196
09/25/08 13:27
09/25/08 13:27
Joined: Mar 2007
Posts: 1,852
A
alpha_strike Offline
Serious User
alpha_strike  Offline
Serious User
A

Joined: Mar 2007
Posts: 1,852
... und noch was...
auch wenn ich auf ein anderes Polygon trace, dieses aber deckungsgleich an der Stelle des ersten Polygons auf der Textur liegt - müssten die UV-Koordinaten identisch sein.

Bei einem Differenzergebnis von über 211 Pixeln heißt das, daß der Anwender ein anderes Polygon traced, das an einer anderen Stelle auf die TExtur gelagert wurde.

Re: hit.u1, hit.u2 [Re: jcl] #229200
09/25/08 13:47
09/25/08 13:47

M
mercuryus OP
Unregistered
mercuryus OP
Unregistered
M



Jetzt kommen wir der Sache schon näher!

Wie ich festgestellt habe, funktioniert dies eben nicht:
Quote:
Das ist richtig: Die Texturkoordinaten bleiben gleich, wenn Sie auf die gleiche Stelle der Textur tracen. Sie bleiben jedoch nicht gleich, wenn Sie in die gleiche Richtung tracen und das Modell drehen, da Sie dann ja andere Textur-Stellen treffen.

(siehe Bilder oben)

Hier trace ich in beiden Fällen auf exakt die gleiche Position des Modells (linke obere Ecke (mit Texturpixelkoordinate 0/0)), bekomme aber bei dem gedrehten Modell eine verschobene? Texturposition.

Page 1 of 3 1 2 3

Moderated by  old_bill, Tobias 

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1