现在的位置: 首页 > 综合 > 正文

Vega Prime 桌面教程(五)

2013年09月14日 ⁄ 综合 ⁄ 共 21127字 ⁄ 字号 评论关闭

运动与视点(下) 

添加碰撞检测器:

1、点击ToolBar上的新建实例,新建一个BumpIsector,并名之“BumpIsector”

2、把长宽高全部设为10,原来的缺省值太小了。

3、在目标列表列表中选择farmhouse。检测器将为每帧检查是否与房屋相撞。

4、点击Isector Mask按钮打开Mask 编辑器,把mask设为0x00000001。

5、在Position reference列表中选择Car,检测器将把自身定位到Car。

6、勾选Isector mask。

定义通道:

1、点击新建实例按钮,新建Observer和Channel。分别命名houseObserver和houseChannel。

2、在houseChannel面板的Used by 分别选择houseObserver和myWindow。

3、在绘制区域左上(0,1),右下(0.5,0.5)

4、转到houseObserver视图,在Scene域选择MyScene,在position域输入(1280,880,140),Look at域

选择farmHouse,房子将位于该通道的中心。

5、在Attachment域点击添加实例,选择MyScene,这样场景中的内容就包括进来了。

保存并预览,场景如下:

导出CPP文件,内容如下:

//
// This file was automatically generated from D:/Program Files/MultiGen-Paradigm1.2/MyACF/chapter2.acf
//
#include "vpModule.h"
#include "vpKernel.h"
#include "vpSearchPath.h"
#include "vpPipeline.h"
#include "vpWindow.h"
#include "vpChannel.h"
#include "vpObserver.h"
#include "vpScene.h"
#include "vpTransform.h"
#include "vpObject.h"
#include "vpIsectorBump.h"
#include "vpIsectorTripod.h"
#include "vpIsectorServiceInline.h"
#include "vpGroundClamp.h"
#include "vpEnv.h"
#include "vpEnvSun.h"
#include "vpEnvMoon.h"
#include "vpEnvSkyDome.h"
#include "vpEnvCloudLayer.h"
#include "vpMotionDrive.h"

//
// Define a static list to hold the instances we create, so that we
// can unref them when unconfigure is called
//
typedef vuVector< vuField< vuBase* > > InstancesList;
static InstancesList* s_pInstancesToUnref = NULL;

 

void define( void )
{
    // Create static instances list that we use to track what we create
    s_pInstancesToUnref = new InstancesList;

    //
    // Initialize all modules
    //

    vpModule::initializeModule( "vpEnv" );
    vpModule::initializeModule( "vpMotion" );

    //
    // Create all instances
    //

    vpKernel* pKernel_myKernel = vpKernel::instance();
    pKernel_myKernel->setNotifyLevel( vuNotify::LEVEL_WARN );
    pKernel_myKernel->setNotifyColorEnable( false );
    pKernel_myKernel->setPriority( vuThread::PRIORITY_NORMAL );
    pKernel_myKernel->setProcessor( -1 );
    pKernel_myKernel->setDesiredFrameRate( 0.000000 );
    pKernel_myKernel->setNotifyClassTypeMode( vuNotify::CLASS_TYPE_MODE_INCLUSIVE );

    vpSearchPath* pSearchPath_mySearchPath = vpSearchPath::instance();
    pSearchPath_mySearchPath->append( "$(MPI_INSTALL_RESOURCE_DEFAULT)/resources/data/databases/town" );
    pSearchPath_mySearchPath->append( "D:/Program Files/MultiGen-Paradigm1.2/resources/tutorials/vegaprime/desktop_tutor/tornado/data/land" );
    pSearchPath_mySearchPath->append( "D:/Program Files/MultiGen-Paradigm1.2/resources/tutorials/vegaprime/desktop_tutor/tornado/data/farmhouse" );
    pSearchPath_mySearchPath->append( "D:/Program Files/MultiGen-Paradigm1.2/resources/tutorials/vegaprime/desktop_tutor/tornado/data/dirtyesprit" );
    pSearchPath_mySearchPath->append( "D:/Program Files/MultiGen-Paradigm1.2/resources/tutorials/vegaprime/desktop_tutor/tornado/data/grainstorage" );

    vpPipeline* pPipeline_myPipeline = new vpPipeline();
    pPipeline_myPipeline->setName( "myPipeline" );
    pPipeline_myPipeline->setMultiThread( vsPipeline::MULTITHREAD_INLINE );
    pPipeline_myPipeline->setId( 0 );
    pPipeline_myPipeline->setNumCullThreads( 0 );
    pPipeline_myPipeline->setCullThreadPriority( vuThread::PRIORITY_NORMAL );
    pPipeline_myPipeline->setCullThreadProcessor( -1 );
    pPipeline_myPipeline->setDrawThreadPriority( vuThread::PRIORITY_NORMAL );
    pPipeline_myPipeline->setDrawThreadProcessor( -1 );

    s_pInstancesToUnref->push_back( pPipeline_myPipeline );

    vpWindow* pWindow_myWindow = new vpWindow();
    pWindow_myWindow->setName( "myWindow" );
    pWindow_myWindow->setLabel( "Vega Prime Window" );
    pWindow_myWindow->setOrigin( 0 ,  0 );
    pWindow_myWindow->setSize( 1024 ,  768 );
    pWindow_myWindow->setFullScreenEnable( false );
    pWindow_myWindow->setBorderEnable( true );
    pWindow_myWindow->setInputEnable( true );
    pWindow_myWindow->setCursorEnable( true );
    pWindow_myWindow->setStereoEnable( false );
    pWindow_myWindow->setAntiAliasEnable( true );
    pWindow_myWindow->setNumColorBits( 8 );
    pWindow_myWindow->setNumAlphaBits( 0 );
    pWindow_myWindow->setNumDepthBits( 24 );
    pWindow_myWindow->setNumStencilBits( 0 );
    pWindow_myWindow->setNumAccumColorBits( 0 );
    pWindow_myWindow->setNumAccumAlphaBits( 0 );
    pWindow_myWindow->setNumMultiSampleBits( 0 );

    s_pInstancesToUnref->push_back( pWindow_myWindow );

    vpChannel* pChannel_myChannel = new vpChannel();
    pChannel_myChannel->setName( "myChannel" );
    pChannel_myChannel->setOffsetTranslate( 0.000000 ,  0.000000 ,  0.000000 );
    pChannel_myChannel->setOffsetRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pChannel_myChannel->setCullMask( 0x0FFFFFFFF );
    pChannel_myChannel->setRenderMask( 0x0FFFFFFFF );
    pChannel_myChannel->setClearColor( 0.000000f ,  0.500000f ,  1.000000f ,  0.000000f );
    pChannel_myChannel->setClearBuffers( 0x03 );
    pChannel_myChannel->setDrawArea( 0.000000 ,  1.000000 ,  0.000000 ,  1.000000 );
    pChannel_myChannel->setFOVSymmetric( 45.000000f ,  -1.000000f );
    pChannel_myChannel->setNearFar( 1.000000f ,  35000.000000f );
    pChannel_myChannel->setLODVisibilityRangeScale( 1.000000 );
    pChannel_myChannel->setLODTransitionRangeScale( 1.000000 );
    pChannel_myChannel->setCullThreadPriority( vuThread::PRIORITY_NORMAL );
    pChannel_myChannel->setCullThreadProcessor( -1 );
    pChannel_myChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_WIREFRAME ,  false );
    pChannel_myChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_TRANSPARENCY ,  true );
    pChannel_myChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_TEXTURE ,  true );
    pChannel_myChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_LIGHT ,  true );
    pChannel_myChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_FOG ,  true );
    pChannel_myChannel->setLightPointThreadPriority( vuThread::PRIORITY_NORMAL );
    pChannel_myChannel->setLightPointThreadProcessor( -1 );

    s_pInstancesToUnref->push_back( pChannel_myChannel );

    vpChannel* pChannel_houseChannel = new vpChannel();
    pChannel_houseChannel->setName( "houseChannel" );
    pChannel_houseChannel->setOffsetTranslate( 0.000000 ,  0.000000 ,  0.000000 );
    pChannel_houseChannel->setOffsetRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pChannel_houseChannel->setCullMask( 0x0FFFFFFFF );
    pChannel_houseChannel->setRenderMask( 0x0FFFFFFFF );
    pChannel_houseChannel->setClearColor( 0.000000f ,  0.500000f ,  1.000000f ,  0.000000f );
    pChannel_houseChannel->setClearBuffers( 0x03 );
    pChannel_houseChannel->setDrawArea( 0.000000 ,  0.500000 ,  0.500000 ,  1.000000 );
    pChannel_houseChannel->setFOVSymmetric( 45.000000f ,  -1.000000f );
    pChannel_houseChannel->setNearFar( 1.000000f ,  35000.000000f );
    pChannel_houseChannel->setLODVisibilityRangeScale( 1.000000 );
    pChannel_houseChannel->setLODTransitionRangeScale( 1.000000 );
    pChannel_houseChannel->setCullThreadPriority( vuThread::PRIORITY_NORMAL );
    pChannel_houseChannel->setCullThreadProcessor( -1 );
    pChannel_houseChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_WIREFRAME ,  false );
    pChannel_houseChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_TRANSPARENCY ,  true );
    pChannel_houseChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_TEXTURE ,  true );
    pChannel_houseChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_LIGHT ,  true );
    pChannel_houseChannel->setGraphicsModeEnable( vpChannel::GRAPHICS_MODE_FOG ,  true );
    pChannel_houseChannel->setLightPointThreadPriority( vuThread::PRIORITY_NORMAL );
    pChannel_houseChannel->setLightPointThreadProcessor( -1 );

    s_pInstancesToUnref->push_back( pChannel_houseChannel );

    vpObserver* pObserver_myObserver = new vpObserver();
    pObserver_myObserver->setName( "myObserver" );
    pObserver_myObserver->setStrategyEnable( false );
    pObserver_myObserver->setTranslate( 2300.000000 ,  2500.000000 ,  15.000000 );
    pObserver_myObserver->setRotate( -90.000000 ,  0.000000 ,  0.000000 );
    pObserver_myObserver->setLatencyCriticalEnable( false );

    s_pInstancesToUnref->push_back( pObserver_myObserver );

    vpObserver* pObserver_houseObserver = new vpObserver();
    pObserver_houseObserver->setName( "houseObserver" );
    pObserver_houseObserver->setStrategyEnable( true );
    pObserver_houseObserver->setTranslate( 1280.000000 ,  880.000000 ,  140.000000 );
    pObserver_houseObserver->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pObserver_houseObserver->setLatencyCriticalEnable( false );

    s_pInstancesToUnref->push_back( pObserver_houseObserver );

    vpScene* pScene_myScene = new vpScene();
    pScene_myScene->setName( "myScene" );

    s_pInstancesToUnref->push_back( pScene_myScene );

    vpTransform* pTransform_carTransform = new vpTransform();
    pTransform_carTransform->setName( "carTransform" );
    pTransform_carTransform->setCullMask( 0x0FFFFFFFF );
    pTransform_carTransform->setRenderMask( 0x0FFFFFFFF );
    pTransform_carTransform->setIsectMask( 0x0FFFFFFFF );
    pTransform_carTransform->setStrategyEnable( true );
    pTransform_carTransform->setTranslate( 0.000000 ,  -30.000000 ,  5.000000 );
    pTransform_carTransform->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pTransform_carTransform->setScale( 1.000000 ,  1.000000 ,  1.000000 );
    pTransform_carTransform->setStaticEnable( false );

    s_pInstancesToUnref->push_back( pTransform_carTransform );

    vpObject* pObject_terrain = new vpObject();
    pObject_terrain->setName( "terrain" );
    pObject_terrain->setCullMask( 0x0FFFFFFFF );
    pObject_terrain->setRenderMask( 0x0FFFFFFFF );
    pObject_terrain->setIsectMask( 0x0FFFFFFFF );
    pObject_terrain->setStrategyEnable( false );
    pObject_terrain->setTranslate( 0.000000 ,  0.000000 ,  0.000000 );
    pObject_terrain->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pObject_terrain->setScale( 1.000000 ,  1.000000 ,  1.000000 );
    pObject_terrain->setStaticEnable( false );
    pObject_terrain->setFileName( "Prime_Junction.flt" );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_VERTEX_ARRAYS ,  true );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_DISPLAY_LISTS ,  true );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMBINE_LIGHT_POINTS ,  true );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_PRESERVE_QUADS ,  false );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_OPTIMIZE_GEOM ,  true );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPUTE_NORMALS ,  false );
    pObject_terrain->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPATIBILITY_MODE ,  true );
    pObject_terrain->setFlattenEnable( true );
    pObject_terrain->setCleanEnable( true );
    pObject_terrain->setAutoPage( vpObject::AUTO_PAGE_SYNCHRONOUS );

    s_pInstancesToUnref->push_back( pObject_terrain );

    vpObject* pObject_farmhouse = new vpObject();
    pObject_farmhouse->setName( "farmhouse" );
    pObject_farmhouse->setCullMask( 0x0FFFFFFFF );
    pObject_farmhouse->setRenderMask( 0x0FFFFFFFF );
    pObject_farmhouse->setIsectMask( 0x0FFFFFFFF );
    pObject_farmhouse->setStrategyEnable( true );
    pObject_farmhouse->setTranslate( 1960.000000 ,  1000.000000 ,  -1.000000 );
    pObject_farmhouse->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pObject_farmhouse->setScale( 1.000000 ,  1.000000 ,  1.000000 );
    pObject_farmhouse->setStaticEnable( false );
    pObject_farmhouse->setFileName( "farmhouse.flt" );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_VERTEX_ARRAYS ,  true );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_DISPLAY_LISTS ,  true );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMBINE_LIGHT_POINTS ,  true );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_PRESERVE_QUADS ,  false );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_OPTIMIZE_GEOM ,  true );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPUTE_NORMALS ,  false );
    pObject_farmhouse->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPATIBILITY_MODE ,  true );
    pObject_farmhouse->setFlattenEnable( true );
    pObject_farmhouse->setCleanEnable( true );
    pObject_farmhouse->setAutoPage( vpObject::AUTO_PAGE_SYNCHRONOUS );

    s_pInstancesToUnref->push_back( pObject_farmhouse );

    vpObject* pObject_car = new vpObject();
    pObject_car->setName( "car" );
    pObject_car->setCullMask( 0x0FFFFFFFF );
    pObject_car->setRenderMask( 0x0FFFFFFFF );
    pObject_car->setIsectMask( 0x0FFFFFFFF );
    pObject_car->setStrategyEnable( true );
    pObject_car->setTranslate( 1990.000000 ,  1000.000000 ,  0.000000 );
    pObject_car->setRotate( 140.000000 ,  0.000000 ,  0.000000 );
    pObject_car->setScale( 1.000000 ,  1.000000 ,  1.000000 );
    pObject_car->setStaticEnable( false );
    pObject_car->setFileName( "esprit-dirty.flt" );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_VERTEX_ARRAYS ,  true );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_DISPLAY_LISTS ,  true );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMBINE_LIGHT_POINTS ,  true );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_PRESERVE_QUADS ,  false );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_OPTIMIZE_GEOM ,  true );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPUTE_NORMALS ,  false );
    pObject_car->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPATIBILITY_MODE ,  true );
    pObject_car->setFlattenEnable( true );
    pObject_car->setCleanEnable( true );
    pObject_car->setAutoPage( vpObject::AUTO_PAGE_SYNCHRONOUS );

    s_pInstancesToUnref->push_back( pObject_car );

    vpObject* pObject_grainStorage = new vpObject();
    pObject_grainStorage->setName( "grainStorage" );
    pObject_grainStorage->setCullMask( 0x0FFFFFFFF );
    pObject_grainStorage->setRenderMask( 0x0FFFFFFFF );
    pObject_grainStorage->setIsectMask( 0x0FFFFFFFF );
    pObject_grainStorage->setStrategyEnable( true );
    pObject_grainStorage->setTranslate( 2450.000000 ,  2460.000000 ,  0.000000 );
    pObject_grainStorage->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pObject_grainStorage->setScale( 1.000000 ,  1.000000 ,  1.000000 );
    pObject_grainStorage->setStaticEnable( false );
    pObject_grainStorage->setFileName( "grainStorage.flt" );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_VERTEX_ARRAYS ,  true );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_GENERATE_DISPLAY_LISTS ,  true );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMBINE_LIGHT_POINTS ,  true );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_PRESERVE_QUADS ,  false );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_OPTIMIZE_GEOM ,  true );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPUTE_NORMALS ,  false );
    pObject_grainStorage->setLoaderAttribute( vpGeometryPageable::LOADER_ATTRIBUTE_COMPATIBILITY_MODE ,  true );
    pObject_grainStorage->setFlattenEnable( true );
    pObject_grainStorage->setCleanEnable( true );
    pObject_grainStorage->setAutoPage( vpObject::AUTO_PAGE_SYNCHRONOUS );

    s_pInstancesToUnref->push_back( pObject_grainStorage );

    vpIsectorBump* pIsectorBump_bumpIsector1 = new vpIsectorBump();
    pIsectorBump_bumpIsector1->setName( "bumpIsector1" );
    pIsectorBump_bumpIsector1->setEnable( true );
    pIsectorBump_bumpIsector1->setRenderEnable( true );
    pIsectorBump_bumpIsector1->setTranslate( 0.000000 ,  0.000000 ,  0.000000 );
    pIsectorBump_bumpIsector1->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pIsectorBump_bumpIsector1->setMode( 0x02 );
    pIsectorBump_bumpIsector1->setIsectMask( 0x01 );
    pIsectorBump_bumpIsector1->setStrategyEnable( true );
    pIsectorBump_bumpIsector1->setDimensions( 10.000000f ,  10.000000f ,  10.000000f );

    s_pInstancesToUnref->push_back( pIsectorBump_bumpIsector1 );

    vpIsectorTripod* pIsectorTripod_myIsector = new vpIsectorTripod();
    pIsectorTripod_myIsector->setName( "myIsector" );
    pIsectorTripod_myIsector->setEnable( true );
    pIsectorTripod_myIsector->setRenderEnable( true );
    pIsectorTripod_myIsector->setTranslate( 0.000000 ,  0.000000 ,  0.000000 );
    pIsectorTripod_myIsector->setRotate( 0.000000 ,  0.000000 ,  0.000000 );
    pIsectorTripod_myIsector->setMode( 0x02A );
    pIsectorTripod_myIsector->setIsectMask( 0x0FFFFFFFF );
    pIsectorTripod_myIsector->setStrategyEnable( true );
    pIsectorTripod_myIsector->setSegmentZExtent( -5000.000000f ,  5000.000000f );
    pIsectorTripod_myIsector->setDimensions( 10.000000f ,  10.000000f );

    s_pInstancesToUnref->push_back( pIsectorTripod_myIsector );

    vpIsectorServiceInline* pIsectorServiceInline_myIsectorService = new vpIsectorServiceInline();
    pIsectorServiceInline_myIsectorService->setName( "myIsectorService" );

    s_pInstancesToUnref->push_back( pIsectorServiceInline_myIsectorService );

    vpGroundClamp* pGroundClamp_myGroundClamp = new vpGroundClamp();
    pGroundClamp_myGroundClamp->setName( "myGroundClamp" );
    pGroundClamp_myGroundClamp->setOffsetFromGround( 0.000000f );

    s_pInstancesToUnref->push_back( pGroundClamp_myGroundClamp );

    vpEnv* pEnv_myEnv = new vpEnv();
    pEnv_myEnv->setName( "myEnv" );
    pEnv_myEnv->setDate( 29 ,  3 ,  2008 );
    pEnv_myEnv->setTimeOfDay( 11.040000f );
    pEnv_myEnv->setTimeMultiplier( 1.000000f );
    pEnv_myEnv->setEphemerisUpdateInterval( 0.000000f );
    pEnv_myEnv->setReferencePosition( -96.790001f ,  32.790001f );
    pEnv_myEnv->setEphemerisTimeZoneOffset( -10000 );
    pEnv_myEnv->setSkyColor( 0.513725f ,  0.701961f ,  0.941176f ,  1.000000f );
    pEnv_myEnv->setVisibilityRange( 80000.000000f );
    pEnv_myEnv->setVisibilityColor( 1.000000f ,  1.000000f ,  1.000000f ,  1.000000f );
    pEnv_myEnv->setAmbientLightingColor( 0.000000f ,  0.000000f ,  0.000000f ,  1.000000f );
    pEnv_myEnv->setWindSpeed( 0.000000f );
    pEnv_myEnv->setWindDirection( 0.000000f ,  1.000000f );

    s_pInstancesToUnref->push_back( pEnv_myEnv );

    vpEnvSun* pEnvSun_myEnvSun = new vpEnvSun();
    pEnvSun_myEnvSun->setName( "myEnvSun" );
    pEnvSun_myEnvSun->setEnable( true );
    pEnvSun_myEnvSun->setTwilightDip( -18.000000f );
    pEnvSun_myEnvSun->setTextureFile( "sun.inta" );
    pEnvSun_myEnvSun->setColor( 0.992156f ,  1.000000f ,  0.949019f ,  1.000000f );
    pEnvSun_myEnvSun->setHorizonColor( 1.000000f ,  0.545098f ,  0.239216f ,  1.000000f );

    s_pInstancesToUnref->push_back( pEnvSun_myEnvSun );

    vpEnvMoon* pEnvMoon_myEnvMoon = new vpEnvMoon();
    pEnvMoon_myEnvMoon->setName( "myEnvMoon" );
    pEnvMoon_myEnvMoon->setEnable( true );
    pEnvMoon_myEnvMoon->setBrightness( 0.250000f );
    pEnvMoon_myEnvMoon->setTextureFile( "moon.inta" );
    pEnvMoon_myEnvMoon->setColor( 0.811765f ,  0.886275f ,  0.937255f ,  1.000000f );

    s_pInstancesToUnref->push_back( pEnvMoon_myEnvMoon );

    vpEnvSkyDome* pEnvSkyDome_myEnvSkyDome = new vpEnvSkyDome();
    pEnvSkyDome_myEnvSkyDome->setName( "myEnvSkyDome" );
    pEnvSkyDome_myEnvSkyDome->setEnable( true );
    pEnvSkyDome_myEnvSkyDome->setGroundColor( 0.211765f ,  0.286275f ,  0.149020f ,  1.000000f );

    s_pInstancesToUnref->push_back( pEnvSkyDome_myEnvSkyDome );

    vpEnvCloudLayer* pEnvCloudLayer_myEnvCloudLayer = new vpEnvCloudLayer();
    pEnvCloudLayer_myEnvCloudLayer->setName( "myEnvCloudLayer" );
    pEnvCloudLayer_myEnvCloudLayer->setEnable( true );
    pEnvCloudLayer_myEnvCloudLayer->setColor( 0.956863f ,  0.976471f ,  0.984314f ,  1.000000f );
    pEnvCloudLayer_myEnvCloudLayer->setElevation( 3000.000000f ,  5000.000000f );
    pEnvCloudLayer_myEnvCloudLayer->setTransitionRange( 500.000000f ,  500.000000f );
    pEnvCloudLayer_myEnvCloudLayer->setScudEnable( false );
    pEnvCloudLayer_myEnvCloudLayer->setTextureFile( "cloud_scattered.inta" );
    pEnvCloudLayer_myEnvCloudLayer->setTextureTiling( 3.000000f ,  3.000000f );

    s_pInstancesToUnref->push_back( pEnvCloudLayer_myEnvCloudLayer );

    vpMotionDrive* pMotionDrive_myMotion = new vpMotionDrive();
    pMotionDrive_myMotion->setName( "myMotion" );
    pMotionDrive_myMotion->setSpeed( 0.000000 );
    pMotionDrive_myMotion->setSpeedLimits( -10.000000 ,  10.000000 );
    pMotionDrive_myMotion->setSpeedDelta( 1.000000 ,  1.000000 );
    pMotionDrive_myMotion->setHeadingDelta( 1.000000 );

    s_pInstancesToUnref->push_back( pMotionDrive_myMotion );

 

    //
    // Satisfy all references
    //

 

    pPipeline_myPipeline->addWindow( pWindow_myWindow );

    pWindow_myWindow->addChannel( pChannel_myChannel );
    pWindow_myWindow->addChannel( pChannel_houseChannel );

 

    pObserver_myObserver->setStrategy( pMotionDrive_myMotion );
    pObserver_myObserver->addChannel( pChannel_myChannel );
    pObserver_myObserver->addAttachment( pEnv_myEnv );
    pObserver_myObserver->setScene( pScene_myScene );
    pObserver_myObserver->setLookFrom( pTransform_carTransform );

    pObserver_houseObserver->addChannel( pChannel_houseChannel );
    pObserver_houseObserver->addAttachment( pEnv_myEnv );
    pObserver_houseObserver->setScene( pScene_myScene );
    pObserver_houseObserver->setLookAt( pObject_farmhouse );

    pScene_myScene->addChild( pObject_terrain );
    pScene_myScene->addChild( pObject_farmhouse );
    pScene_myScene->addChild( pObject_car );
    pScene_myScene->addChild( pObject_grainStorage );

 

    pObject_car->addChild( pTransform_carTransform );
    pObject_car->setStrategy( pMotionDrive_myMotion );

    pIsectorBump_bumpIsector1->setTarget( pObject_farmhouse );
    pIsectorBump_bumpIsector1->setPositionReference( pObject_car );

    pIsectorTripod_myIsector->setTarget( pObject_terrain );

    pIsectorServiceInline_myIsectorService->addIsector( pIsectorBump_bumpIsector1 );

    pGroundClamp_myGroundClamp->setIsector( pIsectorTripod_myIsector );

    pEnv_myEnv->addEnvFx( pEnvSun_myEnvSun );
    pEnv_myEnv->addEnvFx( pEnvMoon_myEnvMoon );
    pEnv_myEnv->addEnvFx( pEnvSkyDome_myEnvSkyDome );
    pEnv_myEnv->addEnvFx( pEnvCloudLayer_myEnvCloudLayer );

 

 

    pMotionDrive_myMotion->setNextStrategy( pGroundClamp_myGroundClamp );

}

 

void unconfigure( void )
{
    //
    // Unref all created instances
    //

    s_pInstancesToUnref->clear();
    delete s_pInstancesToUnref;
}

 

抱歉!评论已关闭.