Hallo,
ich bin auf der Suche nach einem einfachen Shader.
Der Shader sollte einfach die Wirecolor bzw. Objectcolor als Farbe wiedergeben. So ähnlich wie der "Glow" Shader nur das die Farbe von der Objektfarbe übernommen wird.
Wenn man neue objekte in 3dsmax anlegt haben diese ja zunächst kein material. Wenn man die Szene rendert, werden die objekte mit einem einfachen shader mit der Objektfarbe (Objekteigenschaften) gerendert. Die Objekte werden so gerendert wie sie im Viewport zu sehen sind.
Sobald ein Material auf die Objekte gelegt wird, verschwinden die Farben nach dem Rendern logischerweise. Der Effekt ist nur via maxscript wiederherstellbar, da man über die 3dsmax ui keine materialien von objekten löschen kann. ($.material = undefined)
Jetzt möchte ich diese Farbe für einen Shader nutzen. Ich möchte quasi einen Shader der einfach die Objektfarbe zurückgibt. Ähnlich wie die Scheitelpunktfarben Map.
Dann könnte man diese Map beispielsweise in einen A&D Shader als Diffuse legen. Somit könnte man mit einem einzigen Material viele Instanzen eines Objektes verschiedenfarbig darstellen. (Zwar mit exakt gleichen Materialeinstellungen, aber mit verschieden Farben.)
Da sich 3dsmax bei objekten ohne materialen fast so verhält wie ichmir den shader vorstelle, kann das doch nicht so schwierig sein....
In der 3dsmaxshader.mi habe ich folgende Sache gefunden:
declare data
"max_NodeData" (
color "WireColor", <------------------------!
integer "NodeID",
integer "NodeRenderID",
array light "illuminators",
array light "shadowmakers",
boolean "useGlobalLights",
array integer "materialRequirements",
integer "lightIncludeExcludeID"
)
version 2
end declare
Die Wirecolor wird also als "Data" ausgelesen. Wie mache ich daraus einen Shader? Leider habe ich absolut keine Erfahrung mit dem programmieren von Shadern.

