#1 05.08.2005 15:06:45

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

DeformationsFormel

Also, ich habe Zugriff auf jeden Vertex eines Meshs. Dann hab ich zu jeden Vertex die Nachbarvertices.
Wenn jetzt ein Vertex verschoben wird, sollen auch die Nachbarvertices verschoben werden und deren Nachbarn auch wieder.
Das funktioniert zwar, aber ich hab keine Formel, mit der ich die Richtige Verschiebung der Nachbarn berechnen kann. Und das in Abhängigkeit zu der Verschiebung des ersten Vertex.
Es soll damit sowas wie Blech verformt werden. Wenn ich jetzt von einer Blechplatte die linke Seite zusammenstauche, dann soll sich das in Richtung Blechmitte etwas wölben.
Kennt jemand eine gute Formel hierzu?


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#2 05.08.2005 17:30:40

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: DeformationsFormel

in der CPU oder im VertexShader?

Sonst verschiebst Du einfach ein Vertex, und die anderen werden in dieselbe Richtung verschoben. Die Stärke machst Du aber abhängig von der Entfernung zum ersten Vertex, meinetwegen 1/entf oder 1-1/entf oder so in der Art.

Das würde sogar im Vertexshader gehen.

Peer

Offline

 

#3 05.08.2005 17:51:31

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: DeformationsFormel

Hm, dann würde sich aber das Material nicht wölben.

Man könnte aber folgendes machen:
Du bewegst zunächst die Vertices so wie Peer schon sagte. Dann addierst du noch einen zufälligen Einheitsvektor multipliziert mit z.B. der Hälfte der Länge des Vektors um den du vorher verschoben hast.
=> das Material sollte ziemlich zerknittert aussehen, sich allerdings nicht sauber wölben.

Alternativ könnte man statt dem Zufallsvektor auch einen Vektor berechnen.
Irgendwie so, dass sich der Vertex immer nach aussen bewegt, kA wie...müsste ich was länger drüber denken..

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#4 06.08.2005 01:13:42

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: DeformationsFormel

Das mit der Distanz hab ich schon gemacht. Für die Vertices, die am nächst möglichen dran sind, ist der Multiplikator für die Kraftrichtung 1 und für die, die den Abstand = Kraftstärke haben, ist der Multiplikator 0.
Für die Wölbung dachte ich mir, ich addiere noch die Normale dazu. Der Multiplikator hierfür ist 1, wenn der KraftMultiplikator 0.5 ist, 0 wenn der KM 1 oder 0 ist.
Hierbei entstehen jedoch extreme Artefakte!

Dazu hab ich noch keien variable Kraftstärke, die sich an die Meshgröße anpasst. Sozusagen, dass sie 10% von der Größe des Meshs ausmacht - gibt dann sozusagen an, wie leicht sich ein Objekt verformen lässt.
Wenn ich als Stärke die Distanz von der größten Vektorposition zur kleinsten nehme und mal einen Prozentsatz multipliziere, dann geht das nicht bei langen, dünnen Meshs .. da würde sich sich die eine Kante normal verformen, aber die ganz lange Kante extrem stark.
Aber ich glaube die Lösung ist einfach eine seperate Stärke für jede Achse zu berechnen.

Problem sollten also nur noch die Artefakte machen - damit meine ich Dreiecke, die ungünstig übereinander liegen.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#5 06.08.2005 09:01:11

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: DeformationsFormel

Am besten du verschiebst grundsätzlich in Normalenrichtung, sollte doch klappen.

Offline

 

#6 09.08.2005 16:43:24

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: DeformationsFormel

Zuerst dachte ich "hö, das geht doch nie, wenn ich nur in Richtung Normale verschiebe" .. aber mein Irrtum. Nach etwas überlegen klingts ganz logisch. Ich fummle noch an der Stärke. Solche Fragmente enstehen zur Zeit leider immer noch.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#7 09.08.2005 17:06:06

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: DeformationsFormel

Wie sieht´s denn aus? Zeich mal!

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson