Jump to content

Search the Community

Showing results for tags 'coordinates'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to UNIGINE Forums
    • News & Announcements
    • Getting started
  • Development
    • Content Creation
    • World Design
    • Rendering
    • Animation
    • Physics, Navigation and Path Finding
    • UI Systems
    • Sound & Video
    • Editor
    • C++ Programming
    • C# Programming
    • Networking
    • Sim IG (Image Generator)
    • VR Discussions
    • General
  • Improving UNIGINE
    • Documentation
    • Feedback for UNIGINE team
    • Bug Reports
    • Unigine SDK Beta feedback
  • Community
    • Add-on Store (https://store.unigine.com/)
    • Showcase
    • Collaboration
    • Tools, Plugins, Materials & Tutorials
    • General Discussions
  • Legacy
    • UnigineScript

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 2 results

  1. Задумал на экране отобразить длинную прямоугольную шкалу показывающую, например, здоровье. Я так понял что для этого можно использовать WidgetCanvas, ибо он позволяет отображать самые произвольные фигуры из точек и даже текстурные полигоны. Для начала я добавил сам WidgetCanvas и задал ему размер (в пикселях), и определенный цвет: auto pGui = Gui::get(); static auto pCanvas = WidgetCanvas::create(pGui); pCanvas->setPosition(10,10); pCanvas->setWidth(200); pCanvas->setHeight(200); pCanvas->setColor({1.0f,1.0f,1.0f,0.5f}); pGui->addChild(pCanvas, Gui::ALIGN_OVERLAP | Gui::ALIGN_FIXED); В итоге я получил нечто вот такое: То есть, я так понимаю, WidgetCanvas заданного размера был успешно добавлен на GUI. Далее я попытался отобразить на этом canvas хотя-бы один треугольник, и заметил что там используются 3D координаты точек (то есть подразумевается что у canvas по умолчанию стоит какая-то матрица проекции или что-то вроде того). Предположив что ось Z (либо -Z) уходит вдаль, ось X идет вправо, а Y вверх, я решил добавить треугольник со следующими точками: нижняя левая, верхняя левая, верхняя правая: auto pid = pCanvas->addPolygon(); pCanvas->setPolygonColor(pid, {0.8f,0.4f,0.0f,1.0f}); pCanvas->addPolygonPoint(pid,{-1.0f,-1.0f,0.0f}); pCanvas->addPolygonPoint(pid,{-1.0f,1.0f,0.0f}); pCanvas->addPolygonPoint(pid,{1.0f,1.0f,0.0f}); В итоге у меня ничего не отобразилось. Как был белый полупрозрачный квадрат, так и остался. Я подумал что вероятно не хватает той самой матрицы проекции. Я решил добавить просто перспективную проекцию: pCanvas->setTransform(Math::perspective(45.0f,1.0f,0.0f,100.0f)); И в итоге я получил вот это: Треугольник как-то отобразился, но почему-то в качестве вью-порта использовался не квадратик canvas'а, а основной вью-порт, и треугольник вылез за пределы canvas'а. В чем вообще дело? В каких координатах необходимо задавать точки? Какая там проекция по умолчанию? Я попробовал использовать ортогональную проекцию: pCanvas->setTransform(Math::ortho(-1.0f,1.0f,-1.0f,1.0f,0.0f,100.0f)); Но тогда треугольник вовсе исчезает. Можете подсказать в каких координатах нужно работать? Как, например, просто отобразить прямоугольник, который бы покрывал полностью весь canvas? Заранее спасибо.
  2. [SOLVED] Node 3D to NDC coordinates

    Hi, I need the 2D screen Position of a 3D Node transformation. Can you write me a short code example with unigine matrices form the Player and Node and perspective division to get the NDC coordinates? auto proj = m_player->getProjection(); auto view = m_player->getTransform(); auto obj = instance->second->getNode()->getTransform(); auto projectedPosition = Unigine::Math::Mat4(proj)*view*obj*Unigine::Math::Vec4(0.0, 0.0, 0.0, 1.0); projectedPosition /= glm::abs(projectedPosition.w); x = (projectedPosition.x+1.0f)*0.5f * m_ungineAppHandle->getWidth(); y = (1.f-(projectedPosition.z+1.0f)*0.5f) * m_ungineAppHandle->getHeight(); Thank you in advance, Sebastian
×
×
  • Create New...