Возможно ли при создании 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Возможно, кому это покажется интересным, сможет понять как самому задавать свой произвольный цвет.
Скрипты