当前位置: 首页>>代码示例>>C++>>正文


C++ Armature::processBonesLinking方法代码示例

本文整理汇总了C++中Armature::processBonesLinking方法的典型用法代码示例。如果您正苦于以下问题:C++ Armature::processBonesLinking方法的具体用法?C++ Armature::processBonesLinking怎么用?C++ Armature::processBonesLinking使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Armature的用法示例。


在下文中一共展示了Armature::processBonesLinking方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: drawScene

void FixedRenderer::drawScene(Scene * scene, OCamera * camera)
{
    struct MEntityLight
    {
        Box3d lightBox;
        OLight * light;
    };

    struct MSubMeshPass
    {
        unsigned int subMeshId;
        unsigned int lightsNumber;
        Object3d * object;
        OLight * lights[4];
    };

    // sub objects
    #define MAX_TRANSP_SUBOBJ 4096
    static int transpList[MAX_TRANSP_SUBOBJ];
    static float transpZList[MAX_TRANSP_SUBOBJ];
    static MSubMeshPass transpSubObjs[MAX_TRANSP_SUBOBJ];

    // lights list
    #define MAX_ENTITY_LIGHTS 256
    static int entityLightsList[MAX_ENTITY_LIGHTS];
    static float entityLightsZList[MAX_ENTITY_LIGHTS];
    static MEntityLight entityLights[MAX_ENTITY_LIGHTS];


    // get render
    RenderingContext * render = NeoEngine::getInstance()->getRenderingContext();
    render->enableLighting();
    render->enableBlending();


    // make frustum
    Frustum * frustum = camera->getFrustum();
    frustum->makeVolume(camera);

    // update visibility
    updateVisibility(scene, camera);

    // fog
    enableFog(camera);

    // camera
    Vector3 cameraPos = camera->getTransformedPosition();


    // transp sub obj number
    unsigned int transpSubObsNumber = 0;

    // lights
    unsigned int l;
    unsigned int lSize = scene->getLightsNumber();

    // entities
    unsigned int i;
    unsigned int eSize = scene->getEntitiesNumber();
    for(i=0; i<eSize; i++)
    {
        // get entity
        OEntity * entity = scene->getEntityByIndex(i);
        Mesh * mesh = entity->getMesh();

        if(! entity->isActive())
            continue;

        if(! entity->isVisible())
        {
            if(mesh)
            {
                Armature * armature = mesh->getArmature();
                ArmatureAnim * armatureAnim = mesh->getArmatureAnim();
                if(armature)
                {
                    // animate armature
                    if(mesh->getArmature())
                    {
                        Armature * armature = mesh->getArmature();
                        if(mesh->getArmatureAnim())
                        {
                            animateArmature(
                                mesh->getArmature(),
                                mesh->getArmatureAnim(),
                                entity->getCurrentFrame()
                            );
                        }
                        else
                        {
                            armature->processBonesLinking();
                            armature->updateBonesSkinMatrix();
                        }
                    }

                    // TODO : optimize and add a tag to desactivate it
                    updateSkinning(mesh, armature);
                    (*entity->getBoundingBox()) = (*mesh->getBoundingBox());
                }
            }
//.........这里部分代码省略.........
开发者ID:joewan,项目名称:NeoEditor,代码行数:101,代码来源:FixedRenderer.cpp


注:本文中的Armature::processBonesLinking方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。