Urho3D
GameDev.ru / Сообщества / Urho3D / Форум / Когда используется BILLBOARD?

Когда используется BILLBOARD?

GLoomУчастникwww29 июня 201813:14#0
Когда используется SHADOW или там SKINNED понятно. А вот используется ли BILLBOARD вне частиц я не понял. Я могу как то сделать BILLBOARD модель например?
GLoomУчастникwww29 июня 201819:48#1
radio
Я про Урху конкретно. Что мне надо сделать чтоб в шейдер автоматически попал дефайн для билборда?
TarzeronПользовательwww29 июня 201820:53#2
Мне тоже интересен этот вопрос. Думал, что оно делается в шейдерах как-то матрицей трансформации, типа где-то 0 поставить и модель будет заморожена по осям. Но похоже, что там рассчитывают каждый кадр угол поворота, относительно камеры.  В BillboardSet::UpdateBatches это видно. Себе пока сделал свой компонент, и в нем что-то типа:
node->LookAt(cameraNode->GetPosition());
node->SetRotation(node->GetRotation()*Quaternion(0.0,0.0,-1.0,0.0));
GLoomУчастникwww29 июня 201822:48#3
А! Есть же пример оказывается:
        auto* billboardObject = smokeNode->CreateComponent<BillboardSet>();
        billboardObject->SetNumBillboards(NUM_BILLBOARDS);
        billboardObject->SetMaterial(cache->GetResource<Material>("Materials/LitSmoke.xml"));
        billboardObject->SetSorted(true);

        for (unsigned j = 0; j < NUM_BILLBOARDS; ++j)
        {
            Billboard* bb = billboardObject->GetBillboard(j);
            bb->position_ = Vector3(Random(12.0f) - 6.0f, Random(8.0f) - 4.0f, Random(12.0f) - 6.0f);
            bb->size_ = Vector2(Random(2.0f) + 3.0f, Random(2.0f) + 3.0f);
            bb->rotation_ = Random() * 360.0f;
            bb->enabled_ = true;
        }

        // After modifying the billboards, they need to be "committed" so that the BillboardSet updates its internals
        billboardObject->Commit();

/ Форум / Urho3D - игровой движок / ЗАДАВАЙТЕ ВОПРОСЫ

2001—2018 © GameDev.ru — Разработка игр