Toate metodele API folosite pentru setarea și modificarea materialelor din scenă, de tip stack (în stivă) sau node (noduri), se află în modulul Material API. Metodele oferite de acest modul sunt descrise pe această pagină din referința API.
Notă: Metodele API pot lucra doar cu materiale care sunt atașate la obiecte dinamice.
Modulul API material include metode de virtual a fiecărui aspect al materialului stack.
Iată câteva exemple despre cum poate fi folosit modulul material API pentru a obține diferite operații cu materialul unui obiect:
Obținerea culorii difuze a obiectului:
var m_scenes = require("scenes");var m_material = require("material");...var cube = m_scenes.get_object_by_name("Cube");var diffuse_color = m_material.get_diffuse_color(cube, "MyMaterial");var diffuse_color_factor = m_material.get_diffuse_color_factor(cube, "MyMaterial");var diffuse_intensity = m_material.get_diffuse_intensity(cube, "MyMaterial");Obținerea culorii speculare a obiectului:
var m_scenes = require("scenes");var m_material = require("material");...var cube = m_scenes.get_object_by_name("Cube");var specular_color = m_material.get_specular_color(cube, "MyMaterial");var specular_color_factor = m_material.get_specular_color_factor(cube, "MyMaterial");var specular_hardness = m_material.get_specular_hardness(cube, "MyMaterial");var specular_intensity = m_material.get_specular_intensity(cube, "MyMaterial");Obținerea altor parametri:
var m_scenes = require("scenes");var m_material = require("material");...var cube = m_scenes.get_object_by_name("Cube");var emit_factor = m_material.get_emit_factor(cube, "MyMaterial");var alpha_factor = m_material.get_alpha_factor(cube, "MyMaterial");var ambient_factor = m_material.get_ambient_factor(cube, "MyMaterial");var extended_parameters = m_material.get_material_extended_params(cube, "MyMaterial");Setarea parametrilor materialului în stivă:
var m_scenes = require("scenes");var m_material = require("material"); var m_rgba = require("rgba");...var cube = m_scenes.get_object_by_name("Cube");m_material.set_diffuse_color(cube, "MyMaterial", m_rgba.from_values(1.0, 0.0, 0.0, 1.0));m_material.set_diffuse_color_factor(cube, "MyMaterial", 0.05);m_material.set_material_extended_params(cube, "MyMaterial", {fresnel: 0,fresnel_factor: 1.25,parallax_scale: 0,parallax_steps: "5.0",reflect_factor: 0});În prezent, metodele API pot afecta numai nodurile RGB și Value. Orice alt tip de nod nu este acceptat.
Pentru a modifica valoarea unui anumit nod de material, aveți nevoie să:
Numele unui nod poate fi vizualizat și schimbat în partea superioară a panoului lateral din partea dreaptă a ferestrei Node Editor.
Notă: Nodurile din fereastra principală a Editorului de noduri nu afișează numele nodului, ci numai tipul acestuia.
Aceste două exemple arată modul în care parametrii unui material nod pot fi ajustați utilizând metodele API.
Obținerea parametrilor materialului cu noduri:
var m_scenes = require("scenes");var m_material = require("material");...var cube = m_scene.get_object_by_name("Cube");var rgb_node_1 = m_material.get_nodemat_rgb(cube, ["MyMaterial", "MyRGB"]);var rgb_node_2 = m_material.get_nodemat_rgb(cube, ["MyMaterial", "MyRGB_2"]);var value_node = m_material.get_nodemat_value(cube, ["MyMaterial", "MyValue"]);Setarea parametrilor materialului cu noduri:
var m_scenes = require("scenes");var m_material = require("material");...var cube = m_scene.get_object_by_name("Cube");m_material.set_nodemat_value(cube, ["MyMaterial", "MyValue"], 0.8);m_material.set_nodemat_rgb(cube, ["MyMaterial", "MyRGB"], 0.7, 0.9, 0.3);Aceleași metode pot fi folosite pentru a ajusta mediul din scenă, dacă obiectul World din scenă utilizează noduri RGB sau Value. Cu toate acestea, în acest caz nu va trebui să utilizați numele materialului. Cealaltă diferență este că o legătură (un link) spre un obiect de scenă trebuie înlocuit cu o legătură către obiectul World care poate fi preluat cu ajutorul metodei get_world_by_name():
var m_scenes = require("scenes");var m_material = require("material");...var my_world = m_scene.get_world_by_name("World");var world_rgb = m_material.get_nodemat_rgb(my_world, ["My_RGB_3"]);Metodele API permit înlocuirea imaginilor pentru texturi. Acest lucru se poate realiza folosind metoda change_image() din modulul textures:
var m_scenes = require("scenes");var m_tex = require("textures");...var my_cube = m_scenes.get_object_by_name("Cube");m_tex.change_image(my_cube, "My_Texture", "./test.png");Această metodă poate fi aplicată pentru a înlocui și texturile utilizate de obiectul World. Cu toate acestea, în acest caz, numele nodului textură ar trebui folosit în locul denumirii unei texturi.