@Fenghuang

Как правильно наложить текстуру на каждую сторону модели?

Здравствуйте! Прошу помощи в данной задачке. Есть модели которые загружаются в openscenegraph проект в visual studio. Есть изображение которое используется в качестве текстуры для данных моделей. Все модели правильные могогранники. Я смог добиться того чтобы при смене изображения текстура менялась, но проблема в том что текстура натягивается на объект а не отображается корректно на каждой из сторон(к примеру куба). Посоветуйте пожалуйста как можно исправить это. Не могу прикрепить текстуру к модели в 3ds max поскольку требуется это сделать средствами osg.Вот сам код:
#include <iostream>
#include <osg/Light>
#include <osg/LightSource>
#include <osg/PositionAttitudeTransform>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>

int main(int argc, char** argv)
{
    osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile("cube.3ds"); //загрузка модели
    osg::ref_ptr<osg::StateSet> ss = loadedModel->getOrCreateStateSet();
    osg::ref_ptr<osg::Image> image = osgDB::readImageFile("box_1.png"); //подгрузка изображения
    osg::ref_ptr<osg::Texture2D> tex(new osg::Texture2D());  //создаем текстуру
    tex->setImage(image);
    ss->setTextureAttributeAndModes(0, tex);
    osg::ref_ptr<osg::TexGen> texGen(new osg::TexGen());
    texGen->setPlane(osg::TexGen::S, osg::Plane(0.075, 0.0, 0.0, 0.5));
    texGen->setPlane(osg::TexGen::T, osg::Plane(0.0, 0.035, 0.0, 0.3));
    ss->setTextureAttributeAndModes(0, texGen);
    osgViewer::Viewer viewer; //Creating viewer
    viewer.setSceneData(loadedModel);
    viewer.setUpViewOnSingleScreen(0);
    return viewer.run();
    }/code>
  • Вопрос задан
  • 2385 просмотров
Решения вопроса 1
SHVV
@SHVV
Не работал с OSG, но судя по всему вы создаёте планарную проекцию текстуры на объект. Так что не удивительно, что они накладываются не очень хорошо.

Не пробовали использовать текстурные координаты, загруженные из файла? Есть ли они там?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Fenghuang Автор вопроса
Да, вы правы. Проблема была именно в текстурный координатах. Благодарю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы