球面贴图怎么贴的
下面是SDK中的一段代码,但是关于贴图坐标的变换没怎么看明白
// Adds in the spheremap texture
m_pd3dDevice->SetTexture( 0, m_pSphereMapTexture );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
// Generate spheremap texture coords, and shift them over
D3DXMATRIX mat;
mat._11 = 0.5f; mat._12 = 0.0f; mat._13 = 0.0f; mat._14 = 0.0f;
mat._21 = 0.0f; mat._22 =-0.5f; mat._23 = 0.0f; mat._24 = 0.0f;
mat._31 = 0.0f; mat._32 = 0.0f; mat._33 = 1.0f; mat._34 = 0.0f;
mat._41 = 0.5f; mat._42 = 0.5f; mat._43 = 0.0f; mat._44 = 1.0f;
//这里是平移和缩放吧,但是这和贴图坐标怎么对应上的
m_pd3dDevice->SetTransform( D3DTS_TEXTURE0, &mat );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACENORMAL );
能用一般的数学方式表达出来吗?
// Adds in the spheremap texture
m_pd3dDevice->SetTexture( 0, m_pSphereMapTexture );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
// Generate spheremap texture coords, and shift them over
D3DXMATRIX mat;
mat._11 = 0.5f; mat._12 = 0.0f; mat._13 = 0.0f; mat._14 = 0.0f;
mat._21 = 0.0f; mat._22 =-0.5f; mat._23 = 0.0f; mat._24 = 0.0f;
mat._31 = 0.0f; mat._32 = 0.0f; mat._33 = 1.0f; mat._34 = 0.0f;
mat._41 = 0.5f; mat._42 = 0.5f; mat._43 = 0.0f; mat._44 = 1.0f;
//这里是平移和缩放吧,但是这和贴图坐标怎么对应上的
m_pd3dDevice->SetTransform( D3DTS_TEXTURE0, &mat );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACENORMAL );
能用一般的数学方式表达出来吗?
...全文
相关推荐
给球面贴纹理
综上所述,给球面贴纹理是一个涉及坐标系统、映射算法、UV坐标处理等多个环节的复杂过程。理解并熟练掌握这些知识点对于创建高质量的3D图形至关重要。
three-js-mapping-test
平面映射(Planar Mapping):这是最简单的映射方式,将2D纹理直接贴在3D对象的表面上,通常用于平坦或近似平坦的表面。
VC++VC++VC++
常见的投影方式有球面投影、柱面投影和平面投影,以及针对参数曲面的(u, v)映射。有时,还可以根据表面的法线方向动态地确定投影方向,以适应各种形状的物体。
Three.js全景漫游代码实现
在Three.js中,我们可以使用`THREE.SphereGeometry`来创建一个球形几何体,然后用全景图作为纹理贴在球面上。这样,当相机在球内移动时,就能看到全景图像的不同部分。
纹理映射Texture Mapping学习
其他映射技术包括立方体贴图映射、球面映射、柱状映射等,它们各自适应不同的场景和物体形状,以提供最佳的纹理覆盖和视觉效果。立方体贴图常用于环境映射,模拟物体表面反射的周围环境。



