• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            場(chǎng)景查詢
            創(chuàng)建查詢的代價(jià)比較大,而執(zhí)行不是。SceneQueryResualt只定義了兩種成員:movables與worldFragments.
            掩碼也需要自己定義,自己解釋。在一個(gè)軸對(duì)齊盒子中查詢燈光的例子如下:
            const unsigned int LIGHT_QUERY_MASK = 0x00000001; //掩碼定義
            Light* light1 = mSceneMgr->createLight("Light1");
            Light* light2 = mSceneMgr->createLight("Light2");
            light1->setPosition(12, 12, 12);
            light2->setPosition(5, 5, 5);
            light1->setQueryFlags(LIGHT_QUERY_MASK);
            light2->setQueryFlags(LIGHT_QUERY_MASK);
            AxisAlignedBoxSceneQuery* lightQuery =
            mSceneMgr->createAABBQuery(
            AxisAlignedBox(0, 0, 0, 10, 10, 10), LIGHT_QUERY_MASK);
            // sometime later in the application's code, find out what lights are in the box
            SceneQueryResult& results = lightQuery->execute(); //查詢
            // iterate through the list of items returned; there should only be one, and it
            // should be light2 created above. The list iterator is MovableObject type.
            SceneQueryResultMovableList::iterator it = results.movables.begin();
            for (; it != results.movables.end(); it++)
            {
            // act only on the lights, which should be all we have
            assert ((*it)->getQueryFlags() & LIGHT_QUERY_MASK) != 0);
            // do whatever it was we needed to do with the lights
            }
            // destroy the query when we are done with it
            mSceneMgr->destroyQuery(lightQuery);

            我們知道地形總是起伏不平的,當(dāng)主角在上面行走時(shí)需要根據(jù)地形的高度調(diào)整,可以光線查詢來實(shí)現(xiàn)。
            原理比較簡單:向主角腳下執(zhí)行光線查詢,與地形有一個(gè)交點(diǎn),根據(jù)交點(diǎn)的高度調(diào)整主角位置。
            Terrain Clamping
            void Entity::clampToTerrain() {
            static Ogre::Ray updateRay;
            updateRay.setOrigin(m_controlledNode->getPosition() + Ogre::Vector3(0, 15, 0));
            updateRay.setDirection(Ogre::Vector3::NEGATIVE_UNIT_Y);
            m_raySceneQuery->setRay(updateRay);
            Ogre::RaySceneQueryResult& qryResult = m_raySceneQuery->execute();
            if (qryResult.size() == 0) {
            // then we are under the terrain and need to pop above it
            updateRay.setOrigin(m_controlledNode->getPosition());
            updateRay.setDirection(Ogre::Vector3::UNIT_Y);
            m_raySceneQuery->setRay(updateRay);
            }
            qryResult = m_raySceneQuery->execute();
            Ogre::RaySceneQueryResult::iterator i = qryResult.begin();
            if (i != qryResult.end() && i->worldFragment)
            {
            Ogre::SceneQuery::WorldFragment* wf = i->worldFragment;
            m_controlledNode->setPosition(m_controlledNode->getPosition().x,
            i->worldFragment->singleIntersection.y,
            m_controlledNode->getPosition().z);
            }
            }
            void Entity::init()
            {
            // lots of other irrelevant entity init stuff goes here
            m_raySceneQuery = sm->createRayQuery(
            Ogre::Ray(m_controlledNode->getPosition(),
            Ogre::Vector3::NEGATIVE_UNIT_Y));
            // move this node is such a way that it is above the terrain
            clampToTerrain();
            }

            posted on 2007-03-11 17:24 清源游民 閱讀(1165) 評(píng)論(0)  編輯 收藏 引用 所屬分類: OGRE
            <2007年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            精品久久久久久国产| 国产精品成人精品久久久| 狠狠色丁香婷婷久久综合| 亚洲精品乱码久久久久久中文字幕 | 婷婷久久综合九色综合98| 国产精品99久久精品爆乳| 欧美国产成人久久精品| 国产激情久久久久影院老熟女| 日韩人妻无码一区二区三区久久99| 麻豆精品久久久一区二区| 久久久久波多野结衣高潮| 久久精品国产精品亚洲人人 | 久久久久亚洲精品无码网址| 久久亚洲精品中文字幕| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 久久无码高潮喷水| 久久中文精品无码中文字幕| 日本精品久久久久中文字幕| 人妻无码αv中文字幕久久| 久久久这里只有精品加勒比| 免费一级欧美大片久久网| 日本免费一区二区久久人人澡 | 色欲综合久久躁天天躁蜜桃| 亚洲精品NV久久久久久久久久| 精品多毛少妇人妻AV免费久久| 久久久久久a亚洲欧洲aⅴ| 国内精品久久久久久99| 久久婷婷五月综合97色一本一本 | 国产精品女同久久久久电影院| 99精品国产免费久久久久久下载| 热久久国产欧美一区二区精品| 久久成人精品| 久久黄视频| 女同久久| 久久久久国产精品嫩草影院| 亚洲精品无码久久久久| 久久国产高潮流白浆免费观看| 国产精品久久99| 久久激情亚洲精品无码?V| 国产精品久久久香蕉| 无码人妻久久一区二区三区免费丨|