截图:

参考对比下纯D3D的实现:《精通DirectX 3D》第十二章 高级纹理应用 06_SphericalEnvMapping
原理都是一样的,都是有个环境贴图,假的环境映射!
实现很简单,override createScene成员函数就可以了
//
Just override the mandatory create scene method
void createScene( void )
{
// Set ambient light
mSceneMgr -> setAmbientLight(ColourValue( 0.5 , 0.5 , 0.5 ));
// Create a point light
Light * l = mSceneMgr -> createLight( " MainLight " );
// Accept default settings: point light, white diffuse, just set position
// NB I could attach the light to a SceneNode if I wanted it to move automatically with
// other objects, but I don't
l -> setPosition( 20 , 80 , 50 );
Entity * ent = mSceneMgr -> createEntity( " head " , " ogrehead.mesh " );
// Set material loaded from Example.material
ent -> setMaterialName( " Examples/EnvMappedRustySteel " );
// Add entity to the root scene node
mSceneMgr -> getRootSceneNode() -> createChildSceneNode() -> attachObject(ent);
}
void createScene( void )
{
// Set ambient light
mSceneMgr -> setAmbientLight(ColourValue( 0.5 , 0.5 , 0.5 ));
// Create a point light
Light * l = mSceneMgr -> createLight( " MainLight " );
// Accept default settings: point light, white diffuse, just set position
// NB I could attach the light to a SceneNode if I wanted it to move automatically with
// other objects, but I don't
l -> setPosition( 20 , 80 , 50 );
Entity * ent = mSceneMgr -> createEntity( " head " , " ogrehead.mesh " );
// Set material loaded from Example.material
ent -> setMaterialName( " Examples/EnvMappedRustySteel " );
// Add entity to the root scene node
mSceneMgr -> getRootSceneNode() -> createChildSceneNode() -> attachObject(ent);
}
对应的材质脚本在
ogrenew/Samples/Media/materials/scripts/Example.material
里,如下:
material Examples
/
EnvMappedRustySteel
{
technique
{
pass
{
texture_unit
{
texture RustySteel.jpg
}
texture_unit
{
texture spheremap.png
colour_op_ex add src_texture src_current
colour_op_multipass_fallback one one
env_map spherical // hew:这里指明环境映射的类型是球形环境映射
}
}
}
}
{
technique
{
pass
{
texture_unit
{
texture RustySteel.jpg
}
texture_unit
{
texture spheremap.png
colour_op_ex add src_texture src_current
colour_op_multipass_fallback one one
env_map spherical // hew:这里指明环境映射的类型是球形环境映射
}
}
}
}
ogrenew/Samples/Media/materials/textures/spheremap.png

ogrenew/Samples/Media/materials/textures/RustySteel.jpg


本文详细介绍了环境映射技术在DirectX3D中的实现过程,包括创建场景、设置光源、加载环境贴图等关键步骤,并通过具体的材质脚本展示如何在Example.material中实现球形环境映射效果。
225

被折叠的 条评论
为什么被折叠?



