или, если есть простой способ добавить цвет блока в модель gltf, пожалуйста, дайте мне знать, спасибо.
Я отвечу на эту последнюю часть вашего вопроса. MeshBasicMaterial
отключил расчеты освещения, и в glTF это поддерживается расширением, называемым KHR_materials_unlit
.
Вот пример модели с именем BoxUnlit.gltf , который показывает это расширение в действии. Следует отметить два ключевых места: Используемые расширения вверху и материал внизу.
Один из основных моментов здесь заключается в том, что BaseColorFactor
материала указан в линейном цветовом пространстве, а текстуры предоставляются в цветовом пространстве sRGB. Таким образом, вы должны взять выбранный вами цвет и преобразовать его в линейный , обычно , математически увеличив каждый компонент до степени 2,2.
Например, ваш вопрос содержит значение цвета #9E4300
, которое по шкале 0..255
равно (158, 67, 0)
. Разделите каждое число на 255, затем увеличьте на 2,2:
Red == (158 / 255.0) ** 2.2 == 0.348864834
Green == ( 67 / 255.0) ** 2.2 == 0.052841625
Blue == ( 0 / 255.0) ** 2.2 == 0.0
Используйте эти значения в качестве значений RGB BaseColorFactor
модели glTF вместе с альфа-значением 1,0, например:
"materials": [
{
"pbrMetallicRoughness": {
"baseColorFactor": [
0.348864834,
0.052841625,
0.0,
1.0
]
},
"extensions": {
"KHR_materials_unlit": {}
}
}
],
При этом ThreeJS должен автоматически выбрать MeshBasicMaterial для модели.