Aendern der Oberflaechenbeschaffenheit zu Laufzeit
-
Hi,
Ich moechte zu Laufzeit die Oberflaechenbeschaffenheit eines 3D-Objektes aendern, z.B. durch "anbrennen" der originalen Oberflaeche. Schlaegt z.B. eine Rakete in eine Wand ein, so nehm ich an wird dort einfach ne runde "Verbrannte Wand"-Textur raufgemappt, oder?
Aber wie sieht das aus, wenn der verbrannte Teil nicht einfach nur ein Kreis ist? Gibts beispiele von Games wo die Oberflaechen ganz individuell veraendert werden koennen (verbrennen, anmalen, etc.)? Hat einer eine Idee wie das gemacht werden koennte?
-
die betreffende stelle anders(/so wie gewünscht) malen.
rapso->greets();
-
rapso schrieb:
die betreffende stelle anders(/so wie gewünscht) malen.
rapso->greets();
Ja, toent sinnvoll *g*
Aber meine triangle-mesh ist nicht fein genug, damit das gut aussehen wuerde. -> Eine Textur-darueber-kleben-Loesung koennte viel feiner aufgeloest sein.
-
durito schrieb:
Eine Textur-darueber-kleben-Loesung koennte viel feiner aufgeloest sein.
ja, dann los, do it.
rapso->greets();
-
Hmja, aber eben, die frage ist wie do it..
Bsp. ich hab ein 3D-Objekt und kann mit einem virtuellen Buntstift eine dicke Linie (oder sonst irgendwas) draufmalen. Das triangle-mesh ist viel zu grob um die Farbe der triangles zu aendern, also was nun?-> Zusaetzliche Textur draufmappen? (Problem: wie soll zu Laufzeit eine solche Textur entstehen?)
-
Einfach ne Kopie der Texture verändern und die dann nehmen. Das ist auch einer der Gründe warum Decals mit der Zeit verschwinden. Der benötigte Texture-Memory wäre einfach zu hoch.
Decals siehe auch... http://www.flipcode.com/articles/article_decals.shtml
-
thx fuer den Vorschlag. Hmm, Textur veraendern koennt ne Loesung sein. Wobei auch das ziemlich ausarten duerfte (in Programmier- und Rechenaufwand?). Ich werds mal ausprobieren.
Ja fuer Raketeneinschlaege oder sonstiges Zeugs das immer gleich aussieht haette ich auch Decals verwendet. Aber fuer ganz individuelle Farbveranderungen wuerde das ja beliebig schwierig werden.
-
durito schrieb:
Zusaetzliche Textur draufmappen? (Problem: wie soll zu Laufzeit eine solche Textur entstehen?)
wo siehst du da ein problem? createtexture und fertig? was genau fehlt dir? pinselst einfach dein bildchen an die stelle der textur an der du möchtest dass sie die ursprungstextur überpinselt, der rest bleibt transparent. mit dem alpha blendest du in der texturstage dann zwischen der decaltexture und der normalen.
was ist genau dein problem bei der sache?
rapso->greets();
-
durito schrieb:
Programmier
Nein.
durito schrieb:
Rechenaufwand
Kommt darauf an wie du es umsetzt.
-
rapso schrieb:
durito schrieb:
Zusaetzliche Textur draufmappen? (Problem: wie soll zu Laufzeit eine solche Textur entstehen?)
wo siehst du da ein problem? createtexture und fertig? was genau fehlt dir? pinselst einfach dein bildchen an die stelle der textur an der du möchtest dass sie die ursprungstextur überpinselt, der rest bleibt transparent. mit dem alpha blendest du in der texturstage dann zwischen der decaltexture und der normalen.
was ist genau dein problem bei der sache?
rapso->greets();
Wie das gemacht wird ist eigentlich schon klar. Mir gehts mehr darum wie die decaltextur sinnvoll erstellt/bearbeitet und gemappt wird. Das "Gemalte" ist ja nicht irgendein statisches Bild, sondern kann sich im Extremfall von Frame zu Frame veraendern.
-
Mappen wie Decals. Bearbeiten ähnlich einem RenderToTexture Effekt. Und zum Erstellen wirst du dir wohl nen kleinen Algo basteln müssen, der Anhand von, beispielsweise Stärke der Waffe, entsprechende Einschusslöcher etc. berechnet. Wird aber wohl recht langsam werden wenn du ein paar Dutzend davon im Level hast und die jeden Frame neu berechnest.
-
Ahvolon[F-Bytes] schrieb:
durito schrieb:
Programmier
Nein.
Sagst Du. *g*
durito schrieb:
Rechenaufwand
Kommt darauf an wie du es umsetzt.
Ok, seh ich ein. An sich sollte das ja auf der GraKa ziemlich(!) schnell zu machen sein
Cool, ich werd mal ausprobieren wie das ausschaut..
-
Auch auf der Graka ist das nicht so schnell zu machen. Denn du kannst da 1. keine Textures erstellen und zweitens solltest du bedenken, dass du ja vllt. auch ein MG hast
Und dann wird die Sache lustig, ob nun auf der Graka gemacht oder nicht.
-
durito schrieb:
Zusaetzliche Textur draufmappen? (Problem: wie soll zu Laufzeit eine solche Textur entstehen?)
wo siehst du da ein problem? createtexture und fertig? was genau fehlt dir? pinselst einfach dein bildchen an die stelle der textur an der du möchtest dass sie die ursprungstextur überpinselt, der rest bleibt transparent. mit dem alpha blendest du in der texturstage dann zwischen der decaltexture und der normalen.
was ist genau dein problem bei der sache?
rapso->greets();
-
rapso schrieb:
was ist genau dein problem bei der sache?
Dass er nicht weiß, wie er die eigentliche Texture berechnet.
-
rapso schrieb:
durito schrieb:
Zusaetzliche Textur draufmappen? (Problem: wie soll zu Laufzeit eine solche Textur entstehen?)
wo siehst du da ein problem? createtexture und fertig? was genau fehlt dir? pinselst einfach dein bildchen an die stelle der textur an der du möchtest dass sie die ursprungstextur überpinselt, der rest bleibt transparent. mit dem alpha blendest du in der texturstage dann zwischen der decaltexture und der normalen.
was ist genau dein problem bei der sache?
rapso->greets();
Ja, sorry, hab mich nicht so gut ausgedrueckt damit. Ich meine nicht das erstellen, sondern die Tatsache, dass dieses Bild dynamisch jedes Frame aendern koennte.
Ahvolon: Ja das mit dem MG macht mir keine Sorgen. Es geht konkret um einen Simulator aus der Medizin, ich geh mal davon aus, dass Aerzte keinen Bedarf an MGs haben
Die Veraenderungen entstehen vorallem durch "verbrennen" der Oberflaeche. Wobei die Verbrennung aber eben auch mit jedem Frame anwachsen koennte.
-
Gibt da diverse PDF Papers über dei Darstellung von Verbrennungen. Musst du mal Suchen.
-
durito schrieb:
Ja, sorry, hab mich nicht so gut ausgedrueckt damit. Ich meine nicht das erstellen, sondern die Tatsache, dass dieses Bild dynamisch jedes Frame aendern koennte.
dann mußt du jedes frame die zweite texturebene verändern. da du vermutlich nicht weiß wie es 'am ende' aussehen wird. da bleibt dir nicht viel anderes übrig.
ansonsten schau dir mal die demo von zbrush an, die verändern dort auch oberflächeneigenschaften per frame und sogar relativ fix.
rapso->greets();
-
btw. Würde ich ne Verbrennung ähnlich wie ne Heightmap darstellen. Je höher umso schwärzer. Also unten Hautfarbe, dann rot, dann schwarz. Das lässt sich dann simpel berechnen.
Wobei ich sagen muss, dass schwarz recht selten auftritt. Hab zwar auch hin und wieder Leutz die sowas haben aber das is krass selten.
-
ok, thx fuer eure Hilfe.