Как правильно использовать QSkyBoxEntity?

Я смотрел везде, но нет никаких руководств или объяснений, как использовать QSkyBoxEntity.

Я создал Entity и заполнил его трансформацией (установил перевод и 3D-масштаб). Также изменено имя и расширение.

Когда я пытаюсь запустить программу, она говорит

"Qt3D.Renderer.OpenGL.Backend: не удалось найти подходящий модуль текстуры для "skyboxTexture""

Я проверял несколько раз и пробовал разные png-файлы, но безуспешно. Мое изображение (я знаю, что это фальшивая прозрачность, но ведь это ничего не должно менять, верно?)

А вот часть кода:

Qt3DCore::QEntity *resultEntity = new Qt3DCore::QEntity;

    Qt3DExtras::QSkyboxEntity *skyboxEntity = new Qt3DExtras::QSkyboxEntity(resultEntity);
    skyboxEntity->setBaseName("skybox"); //I tried using path as well
    skyboxEntity->setExtension("png");

    Qt3DCore::QTransform *skyTransform = new Qt3DCore::QTransform(skyboxEntity);
    skyTransform->setTranslation(QVector3D(0.0f,0.0f,0.0f));
    skyTransform->setScale3D(QVector3D(0.1f,0.1f,0.1f));

    skyboxEntity->addComponent(skyTransform);
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Похоже, он не находит текстуру скайбокса. Вы использовали абсолютный путь, когда говорите: «Я тоже пытался использовать путь»? Путь, который вы устанавливаете, относится к пути сборки, т.е. это не то место, где лежит ваш файл C++.

В качестве альтернативы вы можете использовать файл ресурсов, а затем загрузить изображение, используя

"qrc:/[prefix]/[filename without extension]"

Вы также можете ознакомиться с ручным тестом Qt3D SkyBox здесь:

https://github.com/qt/qt3d/tree/dev/tests/manual/skybox

Я тоже пробовал это, но у меня это просто не сработало с png. Я уже исправил это, добавив 6 файлов tga с разными частями скайбокса.

Volodymyr 23.11.2022 10:35

Ах хорошо. Возможно, затем опубликуйте это как ответ для других людей, если они столкнутся с этим.

Florian Blume 24.11.2022 10:41

@Florian_Blume нужно было ждать 2 дня для этого, но, тем не менее, документация говорит, что вы можете использовать png и другие файлы для скайбокса.

Volodymyr 25.11.2022 11:07
Ответ принят как подходящий

Важно правильно называть файлы, чтобы скайбокс работал и использовал ресурсный файл для хранения.

Я рекомендую .tga, но и другие форматы тоже должны работать.

Вы можете прочитать об этом здесь: https://doc.qt.io/qt-6/qml-qt3d-extras-skyboxentity.html

А вот пример, как это должно выглядеть

Другие вопросы по теме