webgl - текстура скайбокса babylonjs не отображается

У меня проблема с текстурой скайбокса, сделанной в webgl с помощью babylonjs. Весь мой проект находится на веб-сервере, и все вроде бы хорошо написано, но коробка, которая должна быть скайбоксом, не показывает текстуру - черная снаружи и внутри

код:

var skybox = BABYLON.Mesh.CreateBox("skyBox", 1000.0, scene);
var skyboxMaterial = new BABYLON.StandardMaterial("skyBox", scene);
skyboxMaterial.backFaceCulling = false;
skyboxMaterial.reflectionTexture = new BABYLON.CubeTexture("skybox/skybox", scene);
skyboxMaterial.reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE;
skyboxMaterial.diffuseColor = new BABYLON.Color3(0, 0, 0);
skyboxMaterial.specularColor = new BABYLON.Color3(0, 0, 0);
skybox.material = skyboxMaterial;

person user3166894    schedule 09.01.2014    source источник
comment
У меня возникла аналогичная проблема при использовании изображений .png. Я надеюсь использовать базовые изображения, но я думаю, что если .png не поддерживается, то базовый, вероятно, тоже не будет. Какой позор.   -  person Školstvo    schedule 04.06.2020
comment
Да, поддерживаются только изображения .jpg, какой позор. if (!isEnv && !isDDS && !extensions) { extensions = ["_px.jpg", "_py.jpg", "_pz.jpg", "_nx.jpg", "_ny.jpg", "_nz.jpg"]; }   -  person Školstvo    schedule 04.06.2020


Ответы (4)


Я подозреваю, что ваша структура каталогов на диске неверна для скайбокса.

Если вы воспользуетесь примером игровой площадки Babylon для скайбокса http://www.babylonjs-playground.com/#3458P (а затем загрузите zip для полного рабочего примера)

Вы можете видеть, что в вашем случае «скайбокс/скайбокс» означает каталог с именем «скайбокс», содержащий 6 файлов скайбокса, т.е.

  • "skybox" directory containing files named
    • skybox_nx.jpg
    • скайбокс_px.jpg
    • Skybox_ny.jpg
    • скайбокс_py.jpg
    • Skybox_nz.jpg
    • скайбокс_pz.jpg
person macavalon    schedule 05.07.2015

Сначала проверьте свой туман, он не дает вам увидеть скайбокс, попробуйте его убрать. В моем случае было так: я скопировал код, и он оказался слишком большим для моей сцены, я не заметил изменения. затем я уменьшаю

    var skybox = BABYLON.Mesh.CreateBox("skyBox", 800.0, scene);

to

    var skybox = BABYLON.Mesh.CreateBox("skyBox", 52.5, scene);

и проблема решена

person Amir Mehrnam    schedule 25.05.2020
comment
Я не могу выразить, насколько это спасло меня. Спасибо. - person AzDeveloper; 07.09.2020

Код кажется правильным. Не могли бы вы с помощью клавиши F12 проверить, правильно ли загружаются текстуры?

person David Catuhe    schedule 10.01.2014

У меня такая же проблема. Просто добавьте свободную камеру, чтобы решить эту проблему:

var freeCamera = new BABYLON.FreeCamera("FreeCamera", new BABYLON.Vector3(0, 0, 5), scene);
scene.activeCamera = freeCamera;

Вы должны увидеть свой скайбокс. Спасибо

person jpbalarini    schedule 27.01.2014