游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2572|回复: 2

简单问题:如何创建一个正方体?同时可以自由的在各个面

[复制链接]

17

主题

65

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2009-7-27 11:24:00 | 显示全部楼层 |阅读模式
看了一下SDK,是有BOX,问题是如何创建呢?
谢谢各位老大. [em3]

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2010-3-17 17:59:00 | 显示全部楼层

Re:简单问题:如何创建一个正方体?同时可以自由的在各个

要不是在3DMAX中建个模型  要不画平面显示

4

主题

9

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2010-3-30 20:33:00 | 显示全部楼层

Re:简单问题:如何创建一个正方体?同时可以自由的在各个



第一个目标是用Ogre来绘制一个立方体
Scene代码如下:
        ManualObject* cube;
        cube = mSceneMgr->createManualObject("cube");
        cube->begin("cubeMaterial");

            // 顶点
            cube->position( -100, -100, -100);   //0
            cube->colour(0.0, 0.0, 0.0);
            cube->position( 100, -100, -100);    //1
            cube->colour(1.0, 0.0, 0.0);
            cube->position( 100, -100, 100);    //2
            cube->colour(1.0, 0.0, 1.0);
            cube->position( -100, -100, 100);    //3
            cube->colour(0.0, 0.0, 1.0);
            cube->position( -100, 100, -100);    //4
            cube->colour(0.0, 1.0, 0.0);
            cube->position( 100, 100, -100);    //5
            cube->colour(1.0, 1.0, 0.0);
            cube->position( 100, 100, 100);    //6
            cube->colour(1.0, 1.0, 1.0);
            cube->position( -100, 100, 100);    //7
            cube->colour(0.0, 1.0, 1.0);

            //// 索引
            cube->triangle(0, 2, 1);
            cube->triangle(0, 2, 3);
            cube->triangle(3, 4, 0);
            cube->triangle(3, 7, 4);
            cube->triangle(4, 7, 6);
            cube->triangle(4, 6, 5);
            cube->triangle(5, 2, 1);
            cube->triangle(5, 6, 2);
            cube->triangle(0, 4, 1);
            cube->triangle(5, 1, 4);
            cube->triangle(3, 6, 7);
            cube->triangle(3, 2, 6);

        cube->end();

        SceneNode* sn = mSceneMgr->getRootSceneNode()->createChildSceneNode();
        sn->attachObject(cube);



在上个立方体的基础上加上6个贴图
Scene代码如下:
// 创建六个纹理
        MaterialPtr material = MaterialManager::getSingletonPtr()->create("q", "General");
        material->getTechnique(0)->getPass(0)->createTextureUnitState("q.jpg");
        material = MaterialManager::getSingletonPtr()->create("a", "General");
        material->getTechnique(0)->getPass(0)->createTextureUnitState("a.jpg");
        material = MaterialManager::getSingletonPtr()->create("z", "General");
        material->getTechnique(0)->getPass(0)->createTextureUnitState("z.jpg");
        material = MaterialManager::getSingletonPtr()->create("x", "General");
        material->getTechnique(0)->getPass(0)->createTextureUnitState("x.jpg");
        material = MaterialManager::getSingletonPtr()->create("s", "General");
        material->getTechnique(0)->getPass(0)->createTextureUnitState("s.jpg");
        material = MaterialManager::getSingletonPtr()->create("w", "General");
        material->getTechnique(0)->getPass(0)->createTextureUnitState("w.jpg");


        ManualObject* cube;
        cube = mSceneMgr->createManualObject("cube");


        /// 下面
        cube->begin("q", RenderOperation::OT_TRIANGLE_FAN);
            cube->position( -100, -100, -100);   //0
            cube->textureCoord(1, 0);
            cube->position( 100, -100, -100);    //1
            cube->textureCoord(0, 0);
            cube->position( 100, -100, 100);    //2
            cube->textureCoord(0, 1);
            cube->position( -100, -100, 100);    //3
            cube->textureCoord(1, 1);
        cube->end();

        /// 左面
        cube->begin("a", RenderOperation::OT_TRIANGLE_FAN);
            cube->position( -100, -100, 100);    //3
            cube->textureCoord(1, 0);
            cube->position( -100, 100, 100);    //7
            cube->textureCoord(0, 0);
            cube->position( -100, 100, -100);    //4
            cube->textureCoord(0, 1);
            cube->position( -100, -100, -100);   //0
            cube->textureCoord(1, 1);
        cube->end();

        /// 上面
        cube->begin("z", RenderOperation::OT_TRIANGLE_FAN);
            cube->position( -100, 100, -100);    //4
            cube->textureCoord(1, 0);
            cube->position( -100, 100, 100);    //7
            cube->textureCoord(0, 0);
            cube->position( 100, 100, 100);    //6
            cube->textureCoord(0, 1);
            cube->position( 100, 100, -100);    //5
            cube->textureCoord(1, 1);
        cube->end();
        
        /// 右面
        cube->begin("x", RenderOperation::OT_TRIANGLE_FAN);
            cube->position( 100, -100, -100);    //1
            cube->textureCoord(1, 0);
            cube->position( 100, 100, -100);    //5
            cube->textureCoord(0, 0);
            cube->position( 100, 100, 100);    //6
            cube->textureCoord(0, 1);
            cube->position( 100, -100, 100);    //2
            cube->textureCoord(1, 1);
        cube->end();

        /// 前面
        cube->begin("s", RenderOperation::OT_TRIANGLE_FAN);
            cube->position( 100, -100, -100);    //1
            cube->textureCoord(1, 0);
            cube->position( -100, -100, -100);   //0
            cube->textureCoord(0, 0);
            cube->position( -100, 100, -100);    //4
            cube->textureCoord(0, 1);
            cube->position( 100, 100, -100);    //5
            cube->textureCoord(1, 1);
        cube->end();

        /// 后面
        cube->begin("w", RenderOperation::OT_TRIANGLE_FAN);
            cube->position( 100, -100, 100);    //2
            cube->textureCoord(1, 0);
            cube->position( 100, 100, 100);    //6
            cube->textureCoord(0, 0);
            cube->position( -100, 100, 100);    //7
            cube->textureCoord(0, 1);
            cube->position( -100, -100, 100);    //3
            cube->textureCoord(1, 1);
        cube->end();
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-10 10:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表