{"id":572,"date":"2015-12-19T12:47:14","date_gmt":"2015-12-19T11:47:14","guid":{"rendered":"http:\/\/www.lefx.de\/?p=572"},"modified":"2026-11-05T16:09:36","modified_gmt":"2026-11-05T15:09:36","slug":"workflow-tips","status":"publish","type":"post","link":"https:\/\/test.lefx.de\/en\/workflow-tips\/","title":{"rendered":"Workflow Tips | Random Material ID"},"content":{"rendered":"<p>Eines der Hauptprobleme der Wiedergabe ist ihre Perfektion. Baumobjekten, die aus vielen Blattelementen bestehen, auf die das gleiche Material aufgetragen wurde, fehlen oft die nat\u00fcrlichen Variationen, die der Betrachter erwarten w\u00fcrde. In unserem Produktionsablauf sind wir t\u00e4glich mit diesem Problem konfrontiert. Da wir immer versuchen, die Qualit\u00e4t unserer Architektur-Renderings zu verbessern, haben wir uns entschieden, ein einfach zu bedienendes Skript zu erstellen, mit dem wir zuf\u00e4llige Material-IDs setzen k\u00f6nnen, um die Wahrnehmung nat\u00fcrlicher Variationen zu erm\u00f6glichen.<\/p>\n<p>Unsere wichtigste Software zur Erstellung von Inhalten ist 3ds Max, daher haben wir ein Makro-Skript (in MAXScript) f\u00fcr dieses Problem erstellt.<\/p>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro.png\" alt=\"DE_intro\" \/><\/p>\n<h2>Rekursiver oder iterativer Ansatz<\/h2>\n<p>Es gibt grunds\u00e4tzlich zwei m\u00f6gliche Ans\u00e4tze zur L\u00f6sung dieses Problems. Die iterative erste iteriert durch alle Fl\u00e4chen, um eine zuf\u00e4llige Material-ID festzulegen, w\u00e4hrend die rekursive erste Version die gro\u00dfe Menge an Fl\u00e4chen in kleinere Teilgruppen aufteilt und dann allen in dieser Gruppe enthaltenen Elementen eine Material-ID zuweist; verbunden mit der Fl\u00e4chenauswahl.<\/p>\n<p>Zuerst haben wir den iterativen Ansatz implementiert, um einen Blick auf seine M\u00f6glichkeiten und Einschr\u00e4nkungen zu werfen. Danach dachten wir \u00fcber m\u00f6gliche Optimierungen und andere Ideen nach, wie dieses Problem effizienter gel\u00f6st werden k\u00f6nnte, mit einem optimalen Gleichgewicht zwischen Geschwindigkeit und einem visuell hochwertigen Ergebnis. Deshalb haben wir die rekursive Version weiter untersucht, um das Problem von einem anderen perspektivischen Standpunkt aus zu l\u00f6sen.<\/p>\n<h2>Algorithmen<\/h2>\n<h3>Iterative Version<\/h3>\n<pre style=\"color: #000000; background: #f1f0f0;\"><span style=\"color: #400000; font-weight: bold;\">function<\/span> changeIDsIterative obj minID maxID stepSize <span style=\"color: #806030;\">=<\/span>\n<span style=\"color: #806030;\">(<\/span>\n\tgetElement <span style=\"color: #806030;\">=<\/span> polyop<span style=\"color: #8c0000;\">.<\/span>getElementsUsingFace\n\tsetFaceID <span style=\"color: #806030;\">=<\/span> polyop<span style=\"color: #8c0000;\">.<\/span>setFaceMatID\n\n\trange <span style=\"color: #806030;\">=<\/span> <span style=\"color: #8c0000;\">1<\/span>\n\n\t<span style=\"color: #400000; font-weight: bold;\">for<\/span> i <span style=\"color: #806030;\">=<\/span> <span style=\"color: #8c0000;\">1<\/span> <span style=\"color: #400000; font-weight: bold;\">to<\/span> obj<span style=\"color: #8c0000;\">.<\/span>numfaces by stepSize <span style=\"color: #400000; font-weight: bold;\">do<\/span> <span style=\"color: #806030;\">(<\/span>\n\n\t\trandomID <span style=\"color: #806030;\">=<\/span> random minID maxID\n\n\t\trange <span style=\"color: #806030;\">=<\/span> i <span style=\"color: #806030;\">+<\/span> stepSize\n\n\t\t<span style=\"color: #400000; font-weight: bold;\">if<\/span><span style=\"color: #806030;\">(<\/span>range <span style=\"color: #806030;\">&gt;<\/span> obj<span style=\"color: #8c0000;\">.<\/span>numfaces<span style=\"color: #806030;\">)<\/span> <span style=\"color: #400000; font-weight: bold;\">do<\/span> <span style=\"color: #806030;\">(<\/span>\n\t\t\trange <span style=\"color: #806030;\">=<\/span> obj<span style=\"color: #8c0000;\">.<\/span>numfaces\n\t\t<span style=\"color: #806030;\">)<\/span>\n\n\t\telement <span style=\"color: #806030;\">=<\/span> getElement obj <span style=\"color: #806030;\">#<\/span>{i<span style=\"color: #8c0000;\">..<\/span>range}\n\t\tsetFaceID obj element randomID\n\t<span style=\"color: #806030;\">)<\/span>\n<span style=\"color: #806030;\">)<\/span>\n<\/pre>\n<p>Im Grunde genommen iteriert dieses Skript durch alle Fl\u00e4chen mit einem bestimmten Schritt. Dabei nimmt es die Elemente, die mit den Fl\u00e4chen innerhalb des Stufenbereichs verbunden sind und gibt dieser Auswahl von Fl\u00e4chen eine zuf\u00e4llige Material-ID im Bereich der minimalen ID und der maximalen ID (minID &lt;= ID &lt;= maxID).<\/p>\n<p>Gr\u00f6\u00dfere Werte der Schrittweite w\u00fcrden zu einer h\u00f6heren Geschwindigkeit f\u00fchren, indem viele Fl\u00e4chen \u00fcbersprungen werden, aber zu einer sichtbaren Wiederholung der gleichen verwendeten Material-ID.<\/p>\n<p>Die Anzahl der Funktionsaufrufe zum Setzen einer zuf\u00e4lligen Material-ID h\u00e4ngt also von der Schrittweite <em>s<\/em> ab:<\/p>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/Formel0.png\" alt=\"Formel0\" \/><\/p>\n<p>Vielleicht ist Ihnen aufgefallen, dass in den ersten beiden Zeilen zwei Funktionsaufrufe Variablen zugeordnet sind.<\/p>\n<pre style=\"color: #000000; background: #f1f0f0;\">getElement <span style=\"color: #806030;\">=<\/span> polyop<span style=\"color: #8c0000;\">.<\/span>getElementsUsingFace\nsetFaceID <span style=\"color: #806030;\">=<\/span> polyop<span style=\"color: #8c0000;\">.<\/span>setFaceMatID\n<\/pre>\n<p>Dies geschieht aus Leistungsgr\u00fcnden. Durch die Iinitialisierung des Funktionsaufrufs als Variable sind diese vielen Funktionsaufrufe etwas schneller auszuf\u00fchren.<\/p>\n<h3>Rekursive Version<\/h3>\n<pre style=\"color: #000000; background: #f1f0f0;\"><span style=\"color: #400000; font-weight: bold;\">function<\/span> changeIDs depth obj minFace maxFace minID maxID <span style=\"color: #806030;\">=<\/span>\n<span style=\"color: #806030;\">(<\/span>\n\t<span style=\"color: #400000; font-weight: bold;\">if<\/span><span style=\"color: #806030;\">(<\/span>depth <span style=\"color: #806030;\">&gt;<\/span> <span style=\"color: #8c0000;\">0<\/span><span style=\"color: #806030;\">)<\/span> <span style=\"color: #400000; font-weight: bold;\">then<\/span> <span style=\"color: #806030;\">(<\/span> <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span>Clustering<span style=\"color: #806030;\">,<\/span> <span style=\"color: #400000; font-weight: bold;\">if<\/span> depth !<span style=\"color: #806030;\">=<\/span> <span style=\"color: #8c0000;\">0<\/span>\n\t\tpartSize <span style=\"color: #806030;\">=<\/span> <span style=\"color: #806030;\">(<\/span><span style=\"color: #806030;\">(<\/span>maxFace <span style=\"color: #806030;\">-<\/span> minFace<span style=\"color: #806030;\">)<\/span> <span style=\"color: #806030;\">\/<\/span> <span style=\"color: #8c0000;\">2<\/span> <span style=\"color: #806030;\">+<\/span> <span style=\"color: #8c0000;\">1<\/span><span style=\"color: #806030;\">)<\/span> <span style=\"color: #400000; font-weight: bold;\">as<\/span> <span style=\"color: #400000; font-weight: bold;\">Integer<\/span> <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span>calculate the clustersize\n\n\t\tchangeIDs <span style=\"color: #806030;\">(<\/span>depth<span style=\"color: #806030;\">-<\/span><span style=\"color: #8c0000;\">1<\/span><span style=\"color: #806030;\">)<\/span> obj minFace <span style=\"color: #806030;\">(<\/span>partSize <span style=\"color: #806030;\">+<\/span> minFace<span style=\"color: #806030;\">)<\/span> minID maxID <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span> first part\n\t\tchangeIDs <span style=\"color: #806030;\">(<\/span>depth<span style=\"color: #806030;\">-<\/span><span style=\"color: #8c0000;\">1<\/span><span style=\"color: #806030;\">)<\/span> obj <span style=\"color: #806030;\">(<\/span>partSize <span style=\"color: #806030;\">+<\/span> minFace <span style=\"color: #806030;\">+<\/span> <span style=\"color: #8c0000;\">1<\/span><span style=\"color: #806030;\">)<\/span> maxFace minID maxID <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span> <span style=\"color: #400000; font-weight: bold;\">second<\/span> part\n\n\t<span style=\"color: #806030;\">)<\/span> <span style=\"color: #400000; font-weight: bold;\">else<\/span> <span style=\"color: #806030;\">(<\/span> <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span><span style=\"color: #400000; font-weight: bold;\">set<\/span> material IDs\n\t\tgetElement <span style=\"color: #806030;\">=<\/span> polyop<span style=\"color: #8c0000;\">.<\/span>getElementsUsingFace\n\t\tsetFaceID <span style=\"color: #806030;\">=<\/span> polyop<span style=\"color: #8c0000;\">.<\/span>setFaceMatID\n\n\t\trandomID <span style=\"color: #806030;\">=<\/span> random minID maxID\n                <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span><span style=\"color: #400000; font-weight: bold;\">get<\/span> a random ID between the given values\n\t\telement <span style=\"color: #806030;\">=<\/span> getElement obj <span style=\"color: #806030;\">#<\/span>{minFace<span style=\"color: #8c0000;\">..<\/span>maxFace}\n                <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span><span style=\"color: #400000; font-weight: bold;\">select<\/span> all elements <span style=\"color: #400000; font-weight: bold;\">with<\/span> faces in the given cluster of faces\n\t\tsetFaceID obj element randomID\n                <span style=\"color: #806030;\">-<\/span><span style=\"color: #806030;\">-<\/span><span style=\"color: #400000; font-weight: bold;\">set<\/span> the random ID <span style=\"color: #400000; font-weight: bold;\">to<\/span> all faces in the selection\n\t<span style=\"color: #806030;\">)<\/span>\n<span style=\"color: #806030;\">)<\/span>\n<\/pre>\n<p>Die rekursive Version teilt die riesige Menge von in kleinere Gruppen von Fl\u00e4chen auf, bevor eine Material-ID festgelegt wird.<\/p>\n<p>Der Algorithmus teilt grunds\u00e4tzlich die Anzahl der Fl\u00e4chen in H\u00e4lften, bis der depth-wert Null ist. Dann w\u00e4hlt das Skript f\u00fcr jeden Unterabschnitt alle Elemente aus, die mit den Fl\u00e4chen des Unterabschnitts verbunden sind, und weist ihnen eine zuf\u00e4llige ID zu. Der zweite Teil ist also gleich der iterativen Version.<\/p>\n<p>Der einzige Unterschied besteht in der Art und Weise der Auswahl der Fl\u00e4chen.<\/p>\n<p>Beispiel f\u00fcr depth = 3<\/p>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DepthValue.png\" alt=\"DepthValue\" \/><\/p>\n<p>Also die Anzahl der Teile, bei denen eine zuf\u00e4llige Material-ID gesetzt werden soll:<\/p>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/Formel2.png\" alt=\"Formel2\" \/><\/p>\n<p>Die Anzahl der faces rekursiv in Unterteile zu zerlegen, geht sehr schnell. Der Hauptengpass dieses Skripts ist der Zugriff der 3dx Max-Schnittstellen getElement und setFaceID.<\/p>\n<p>Die \u00e4quivalenten Parameter f\u00fcr iterative und rekursive Funktionsaufrufe k\u00f6nnen durch berechnet werden:<\/p>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/Formel1.png\" alt=\"Formel1\" \/><\/p>\n<h3>Welche ist jetzt besser?<\/h3>\n<p>Im Grunde leisten beide Versionen die gleiche Arbeit und sollten ein vergleichbares Ergebnis liefern k\u00f6nnen. Die Hauptunterschiede sind die Parameter und das interne Verfahren.<\/p>\n<p>Wenn Sie ein Objekt mit vielen Polygonen haben und (fast) jedes Element eine zuf\u00e4llige Material-ID haben sollte, dann ist die iterative Version einfacher zu benutzen, weil Sie einfach 1 oder vergleichbar niedrige Werte f\u00fcr die Schrittweite <em>s<\/em>. oder andere kleine Werte eingeben. Dann w\u00fcrde das Skript jeder Fl\u00e4che eine zuf\u00e4llige ID zuweisen und eine zuf\u00e4llige ID festlegen. Aber andererseits, wenn die Elemente viele faces haben, w\u00fcrde die Arbeit oft mehr als einmal durchgef\u00fchrt werden. Dies wird auch wegen der vielen Schnittstellenzugriffe von 3ds Max sehr langsam sein.<\/p>\n<p>Dann w\u00e4re es einfacher, den rekursiven Ansatz zu verwenden und mit kleinen Werten f\u00fcr die depth zu beginnen, bis man ein zufriedenstellendes Ergebnis mit gen\u00fcgend Mischung erh\u00e4lt, indem man den depth-wert erh\u00f6ht.<\/p>\n<h2>Beispiele<\/h2>\n<h3>Unterschiedliche Material-IDs: 3<\/h3>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_mat.png\" alt=\"DE_mat\" \/><\/p>\n<h3>Laufzeit: iterativ<\/h3>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/itereative.png\" alt=\"Iterative\" \/><\/p>\n<h3>Laufzeit: rekursive<\/h3>\n<p><img decoding=\"async\" class=\"img-responsive\" src=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/rekursiv.png\" alt=\"Rekursiv\" \/><\/p>\n<p>Es war uns eine Freude, Ihnen diese kleinen Gedanken \u00fcber unseren Arbeitsablauf zu zeigen. Wir hoffen, Sie hatten Spa\u00df beim Lesen des Textes und beim Betrachten der Bilder. Um mehr von unseren Projekten zu sehen, besuchen Sie unseren <a href=\"\/en\/showroom\/\">Showroom<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Eines der Hauptprobleme der Wiedergabe ist ihre Perfektion. Baumobjekten, die aus vielen Blattelementen bestehen, auf die das gleiche Material aufgetragen wurde, fehlen oft die nat\u00fcrlichen Variationen, die der Betrachter erwarten w\u00fcrde. In unserem Produktionsablauf sind wir t\u00e4glich mit diesem Problem konfrontiert. Da wir immer versuchen, die Qualit\u00e4t unserer Architektur-Renderings zu verbessern, haben wir uns entschieden, [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":580,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[6],"tags":[10,17,30],"class_list":["post-572","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-3ds-max","tag-maxscript","tag-workflow"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.2 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Zuf\u00e4llige Material-IDs per MAXScript in 3ds Max \u2013 LEFX<\/title>\n<meta name=\"description\" content=\"Mehr Variation in Architektur-Renderings: Unser MAXScript vergibt zuf\u00e4llige Material-IDs, iterativ oder rekursiv, mit Laufzeitvergleich.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Workflow Tips | Random Material ID\" \/>\n<meta property=\"og:description\" content=\"Mehr Variation in Architektur-Renderings: Unser MAXScript vergibt zuf\u00e4llige Material-IDs, iterativ oder rekursiv, mit Laufzeitvergleich.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.lefx.de\/en\/workflow-tips\/\" \/>\n<meta property=\"og:site_name\" content=\"LEFX GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-19T11:47:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-05T15:09:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"648\" \/>\n\t<meta property=\"og:image:height\" content=\"357\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tom Micklich\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tom Micklich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/\"},\"author\":{\"name\":\"Tom Micklich\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#\\\/schema\\\/person\\\/e743bc484722475b8d7187b29da5625d\"},\"headline\":\"Workflow Tips | Random Material ID\",\"datePublished\":\"2015-12-19T11:47:14+00:00\",\"dateModified\":\"2026-11-05T15:09:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/\"},\"wordCount\":740,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/test.lefx.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/DE_intro_Vorschau-1.png\",\"keywords\":[\"3ds Max\",\"MaxScript\",\"Workflow\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/\",\"url\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/\",\"name\":\"Zuf\u00e4llige Material-IDs per MAXScript in 3ds Max \u2013 LEFX\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/test.lefx.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/DE_intro_Vorschau-1.png\",\"datePublished\":\"2015-12-19T11:47:14+00:00\",\"dateModified\":\"2026-11-05T15:09:36+00:00\",\"description\":\"Mehr Variation in Architektur-Renderings: Unser MAXScript vergibt zuf\u00e4llige Material-IDs, iterativ oder rekursiv, mit Laufzeitvergleich.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#primaryimage\",\"url\":\"https:\\\/\\\/test.lefx.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/DE_intro_Vorschau-1.png\",\"contentUrl\":\"https:\\\/\\\/test.lefx.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/DE_intro_Vorschau-1.png\",\"width\":648,\"height\":357},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/workflow-tips\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/test.lefx.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workflow Tips | Random Material ID\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#website\",\"url\":\"https:\\\/\\\/test.lefx.de\\\/\",\"name\":\"LeFx GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/test.lefx.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#organization\",\"name\":\"LeFx GmbH\",\"url\":\"https:\\\/\\\/test.lefx.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/test.lefx.de\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/LeFx-Logo_600px_square.png\",\"contentUrl\":\"https:\\\/\\\/test.lefx.de\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/LeFx-Logo_600px_square.png\",\"width\":600,\"height\":300,\"caption\":\"LeFx GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/test.lefx.de\\\/#\\\/schema\\\/person\\\/e743bc484722475b8d7187b29da5625d\",\"name\":\"Tom Micklich\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/?s=96&d=mm&r=g\",\"caption\":\"Tom Micklich\"},\"url\":\"https:\\\/\\\/test.lefx.de\\\/en\\\/author\\\/tom-micklich\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zuf\u00e4llige Material-IDs per MAXScript in 3ds Max \u2013 LEFX","description":"Mehr Variation in Architektur-Renderings: Unser MAXScript vergibt zuf\u00e4llige Material-IDs, iterativ oder rekursiv, mit Laufzeitvergleich.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_GB","og_type":"article","og_title":"Workflow Tips | Random Material ID","og_description":"Mehr Variation in Architektur-Renderings: Unser MAXScript vergibt zuf\u00e4llige Material-IDs, iterativ oder rekursiv, mit Laufzeitvergleich.","og_url":"https:\/\/test.lefx.de\/en\/workflow-tips\/","og_site_name":"LEFX GmbH","article_published_time":"2015-12-19T11:47:14+00:00","article_modified_time":"2026-11-05T15:09:36+00:00","og_image":[{"width":648,"height":357,"url":"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png","type":"image\/png"}],"author":"Tom Micklich","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tom Micklich","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.lefx.de\/workflow-tips\/#article","isPartOf":{"@id":"https:\/\/test.lefx.de\/workflow-tips\/"},"author":{"name":"Tom Micklich","@id":"https:\/\/test.lefx.de\/#\/schema\/person\/e743bc484722475b8d7187b29da5625d"},"headline":"Workflow Tips | Random Material ID","datePublished":"2015-12-19T11:47:14+00:00","dateModified":"2026-11-05T15:09:36+00:00","mainEntityOfPage":{"@id":"https:\/\/test.lefx.de\/workflow-tips\/"},"wordCount":740,"commentCount":0,"publisher":{"@id":"https:\/\/test.lefx.de\/#organization"},"image":{"@id":"https:\/\/test.lefx.de\/workflow-tips\/#primaryimage"},"thumbnailUrl":"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png","keywords":["3ds Max","MaxScript","Workflow"],"articleSection":["Blog"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.lefx.de\/workflow-tips\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.lefx.de\/workflow-tips\/","url":"https:\/\/test.lefx.de\/workflow-tips\/","name":"Zuf\u00e4llige Material-IDs per MAXScript in 3ds Max \u2013 LEFX","isPartOf":{"@id":"https:\/\/test.lefx.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.lefx.de\/workflow-tips\/#primaryimage"},"image":{"@id":"https:\/\/test.lefx.de\/workflow-tips\/#primaryimage"},"thumbnailUrl":"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png","datePublished":"2015-12-19T11:47:14+00:00","dateModified":"2026-11-05T15:09:36+00:00","description":"Mehr Variation in Architektur-Renderings: Unser MAXScript vergibt zuf\u00e4llige Material-IDs, iterativ oder rekursiv, mit Laufzeitvergleich.","breadcrumb":{"@id":"https:\/\/test.lefx.de\/workflow-tips\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.lefx.de\/workflow-tips\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/test.lefx.de\/workflow-tips\/#primaryimage","url":"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png","contentUrl":"https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png","width":648,"height":357},{"@type":"BreadcrumbList","@id":"https:\/\/test.lefx.de\/workflow-tips\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/test.lefx.de\/"},{"@type":"ListItem","position":2,"name":"Workflow Tips | Random Material ID"}]},{"@type":"WebSite","@id":"https:\/\/test.lefx.de\/#website","url":"https:\/\/test.lefx.de\/","name":"LeFx GmbH","description":"","publisher":{"@id":"https:\/\/test.lefx.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/test.lefx.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/test.lefx.de\/#organization","name":"LeFx GmbH","url":"https:\/\/test.lefx.de\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/test.lefx.de\/#\/schema\/logo\/image\/","url":"https:\/\/test.lefx.de\/wp-content\/uploads\/2025\/02\/LeFx-Logo_600px_square.png","contentUrl":"https:\/\/test.lefx.de\/wp-content\/uploads\/2025\/02\/LeFx-Logo_600px_square.png","width":600,"height":300,"caption":"LeFx GmbH"},"image":{"@id":"https:\/\/test.lefx.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/test.lefx.de\/#\/schema\/person\/e743bc484722475b8d7187b29da5625d","name":"Tom Micklich","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"Tom Micklich"},"url":"https:\/\/test.lefx.de\/en\/author\/tom-micklich\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png",648,357,false],"thumbnail":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1-150x150.png",150,150,true],"medium":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1-300x165.png",300,165,true],"medium_large":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png",648,357,false],"large":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png",648,357,false],"1536x1536":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png",648,357,false],"2048x2048":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1.png",648,357,false],"trp-custom-language-flag":["https:\/\/test.lefx.de\/wp-content\/uploads\/2016\/02\/DE_intro_Vorschau-1-18x10.png",18,10,true]},"uagb_author_info":{"display_name":"Tom Micklich","author_link":"https:\/\/test.lefx.de\/en\/author\/tom-micklich\/"},"uagb_comment_info":0,"uagb_excerpt":"Eines der Hauptprobleme der Wiedergabe ist ihre Perfektion. Baumobjekten, die aus vielen Blattelementen bestehen, auf die das gleiche Material aufgetragen wurde, fehlen oft die nat\u00fcrlichen Variationen, die der Betrachter erwarten w\u00fcrde. In unserem Produktionsablauf sind wir t\u00e4glich mit diesem Problem konfrontiert. Da wir immer versuchen, die Qualit\u00e4t unserer Architektur-Renderings zu verbessern, haben wir uns entschieden,&hellip;","_links":{"self":[{"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/posts\/572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/comments?post=572"}],"version-history":[{"count":2,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/posts\/572\/revisions"}],"predecessor-version":[{"id":5906,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/posts\/572\/revisions\/5906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/media\/580"}],"wp:attachment":[{"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/media?parent=572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/categories?post=572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.lefx.de\/en\/wp-json\/wp\/v2\/tags?post=572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}