Возможно ли при создании 3D объекта задать ему произвольный RGB цвет, не используя при этом реальную текстуру, а в дальнейшем ещё и управлять цветом объекта программно?
На данном этапе я располагаю только специальным скриптом для OGRE движка, который позволяет окрашивать объекты в четыре цвета: Blue, Green, Red, Yellow.
Приведу тестовый код создания четырёх сфер раскрашенных этими цветами.
Для работы программки, рядом с файлом кода должна быть папка Data\Script\... со скриптами, файл Color.material отвечает именно за Blue, Green, Red, Yellow.
Все файлы я прилагаю к этому примеру.
If InitEngine3D() And InitSprite() And InitKeyboard() And InitMouse() If (Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem))=0 MessageRequester("Error","Путь 3D-ресурсов не найден") EndIf Parse3DScripts() Else MessageRequester("Error","Инициализация 3D-среды неудалась") End EndIf OpenScreen(1920, 1080, 32, ""); поставите своё разрешение экрана ;---Camera------- Cam_0=CreateCamera(#PB_Any,0,0,100,100) MoveCamera(Cam_0,100,100,100,#PB_Absolute) CameraLookAt(Cam_0, 0, 0, 0) ;-Light LightMain=CreateLight(#PB_Any, RGB(255, 255, 255), 560, 900, 500) ;- ScriptMaterials Blue=GetScriptMaterial(#PB_Any, "Color/Blue") Green=GetScriptMaterial(#PB_Any, "Color/Green") Red=GetScriptMaterial(#PB_Any, "Color/Red") Yellow=GetScriptMaterial(#PB_Any, "Color/Yellow") ;- Meshes SphereR=CreateEntity(#PB_Any, MeshID(CreateSphere(#PB_Any,10)), MaterialID(Red), 0, 0, 0) SphereG=CreateEntity(#PB_Any, MeshID(CreateSphere(#PB_Any,10)), MaterialID(Green), 0, 40, 0) SphereB=CreateEntity(#PB_Any, MeshID(CreateSphere(#PB_Any,10)), MaterialID(Blue), 40, 0, 0) SphereY=CreateEntity(#PB_Any, MeshID(CreateSphere(#PB_Any,10)), MaterialID(Yellow), 0, 0, 40) Repeat RenderWorld() ExamineKeyboard() If KeyboardPushed(#PB_Key_Escape) ; press Esc to quit End EndIf FlipBuffers() ForEver
Возможно, кому это покажется интересным, сможет понять как самому задавать свой произвольный цвет.
Скрипты