Jump to content
Unity Insider Forum
Sign in to follow this  
Bixxler

Eigene Terrainengine (Brush: Shader oder Projector?)

Recommended Posts

Hallo liebe Gemeinde,

ich möchte ein Terrain Editor erstellen. Nun stehe ich vor folgenden Problem.. Wie auf dem Bild zu sehen ist, würde ich gerne wissen wie mann diesen Brush effekt erhält.

Geschieht das im Shader selber?..  der Brush geht ja über das Terrain hinaus.  Alle versuche die ich veruscht haben gehen nicht über das Terrain hinaus.

Geschieht das eventuell über einen Projector?

screen_unity.jpg

Share this post


Link to post
Share on other sites

Gute Frage, ich glaube der Brush orientiert sich am darunterliegenden Mesh und "berechnet" dann die Grafik entsprechend der Mesh-Vertices die im umschlossenen Bereich liegen. Ein Projektor ist es denke ich nicht, der würde bei meinem berechneten Terrainobjekt keine Probleme bekommen:

QcCdc0D.png


Zudem sind nach meiner Meinung solche Veränderungen des Shapes für einen Projektor auch eher untypisch (ok ich habe das Terrain hier auch böse verformt 😜:

j6Ub67J.png

 

Share this post


Link to post
Share on other sites

Wäre schön wen am Rand des Terrains noch "Mesh" existiren würde. Allerdings ist das gerade dass Problem. Der Brush rendert über das Terrain hinaus. Und da stelle ich mir die Frage wie das geht. Oder wird hier ein transparentes Mesh als Border genutzt?

Share this post


Link to post
Share on other sites

Sieht für mich so aus  als ob er da einfach die Textur des Kreises weiter malt und vollendet. Man sieht aber wie die Kante des Brushes erst noch bis zum Boden des Terrains geht und dann erst den Kreis weitermalt, für sich das berechnet aus:

P6JVSuJ.png

 

Wie gesagt sieht für mich so aus als ob er die Vertices des Meshes ans Ränder nimmt und dann einen Kreis extrapoliert und dann auf dieses extrapolierten Kreis eine Textur hineinrendert.

Share this post


Link to post
Share on other sites

Grob vereinfachte Darstellung, Die Textur kann dabei eine einfache 2D-Textur sein die einfach im Screenspace gerendert wird. Die 3D-Positionen der Vertices werden dabei in den Screenspace umgerechnet.

xc7d8B0.png

Share this post


Link to post
Share on other sites

Hier kannst du sehen was ich oben geschrieben habe, Ich habe hier als Test ein Pixel aus der Heighmap des Terrains nach oben gezogen und die Spitze besteht dabei aus exakt 4 Vertices. Der berechnete Kreis orientiert sich dabei an 2 Vertices die in "seinem Bereich" liegen.

jeBTb4r.png

Share this post


Link to post
Share on other sites

Wobei am Ende bin ich mir nun doch nicht mehr sicher, kann auch sein das es ein Projektor ist der einfach an der Normalen der Oberfläche entlangwandert, das wäre für dich auf jeden Fall die einfachste Lösung ;) 

Da sich er Kreis hier auch zwischen den Kanten der Vertices bewegt (aber auch das lässt sich berechnen, wird dann aber schon komplex):

XnbEVoE.png

Share this post


Link to post
Share on other sites

Auf dem Terrain selber kann ich das ohne Probleme lösen, nur ich komme nicht über den Rand hinnaus . Im Shader selber kann ich auch keine Vertices hinzufügen (die ja für den Kreis nötig wären). Ich werd es wohl mal mit dem Projector versuchen, Falls es jemand weiß wie mann es anders lösen kann, bitte melden 😃

 

Unity-2020-07-11-21-38-57-03.gif.b7cff272e8fef48aa382533bed03ae2f.gif

Share this post


Link to post
Share on other sites

Hab mal schnell einen Projektor gebastelt:
Vergleich Projektor und Terrain Brush:


6jjpnR5.png

 

Ist also denke ich kein "normaler Projektor". Ein Projektor wandert nicht mal eben zur Spitze es Meshes rauf;)

  • Haha 1

Share this post


Link to post
Share on other sites

Gut dann kann ich mir das ja schenken :( Was mich wundert das er halt am Rand des Terrain grade runter zeichnet und dan qasi auf dem Gitter wo ja (kein?) Mesh ist weiter macht.

Share this post


Link to post
Share on other sites

Ich denke er merkt schon das da der Mesh zu Ende ist und zeichnet dann den Kreis einfach weiter: Wenn der Kreis nur eine 2D-Textur ist die im Screenspace gezeichner wird (also wie UI) dann stört ihn das nicht weiter. Komplex wird dann aber die Geschichte diese UI-Textur an die Vertices des Meshes anzupassen

Hier sieht man auch, dass plötzlich der Kreis hinter der Geometrie gezeichnet bzw berechnet wird und daher ein Stück des Kreises verschwindet, ein Projektor wäre denke ich immer voll sichtbar:

b37KMkS.png

Ok nein stimmt auch nicht ich geb es auf :)

p3glWdQ.png

Share this post


Link to post
Share on other sites

Ich denke wenn du neben dem Terrain den Brush haben will würde der Projektor schon eine gute Lösung sein, den anderen Weg die Textur anhand der Vertices des Meshes zu berechnen stelle ich mir schon recht komplex vor.

Ah wobei der Projektor kann auch nicht neben einem Mesh weiter zeichen 😁 auch das spricht wieder dafür das es eine UI-Textur ist.

 

Share this post


Link to post
Share on other sites

Ich vermute ich habe eine Lösung gefunden. Habe heute keine Zeit es zu testen. Werde mich bis Montag einmal melden.

Falls es klappen sollte werde ich es für dich ZeroCool nochmal posten. :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...