西昌.何雨锋 mini草
mini草
模型:
1、mini草是由mesh进化来的,所以先要做mesh草。
2、mesh草实际上是由一个十字交叉的两个pacth构成的,所以可以在3DMax中画一个正方形的pacth,如果要各面都可见
则可以将这两个patch复制出来旋转180度并与原先的十字叉重合,就可做到所有方向可见。不用赋材质,然后倒出成3Ds格式。
纹理贴图:
要制作完全半透明的贴图,最好使用dds格式的有alpha通道的图。
找一个单独的植物贴图,要保证周围都是一种颜色。
用photoshop9以上版本(能支持dds格式的版本),打开这一普通植物图片。
打开后,将植物周围的统一颜色用魔术棒选起来,然后新建一通道(alpha通道),在此通道中要保证背景区域完全变黑。
同时用这种方法也把RGB通道的背静也变黑。(当然如果已经有了该图的alpha通道贴图那就更好了,直接将起复制进alhpa通道)
使用图象大小变化功能,把图象大小变为256x256象素或其他2的倍数格式,否则无法导出为dxt5的dds文件。
(如果原先的图象本身比例不对,那么要先用画布剪裁将画布变成正方形了再变化图象大小)
选择导出,格式为dds带alpha通道的格式,使用dxt5格式导出。
模型贴图部分:
用tv65自带的modelview工具打开模型,然后在stage0部分使用做好了的dds文件纹理,不用开alpha混合,直接保存即可.
程序部分:
mesh读草
temp_grass=scene1->CreateMeshBuilder("vv");
temp_grass->LoadTVM("map//other//grass.TVM",true,true);
temp_grass->SetPosition(0,land1->GetHeight(0,0),0);
temp_grass->SetBlendingMode(cTV_BLEND_ALPHA,-1);
temp_grass->SetAlphaTest(true,64,true,-1);
从mesh建立出100个minimesh:
mini_grass1=scene1->CreateMiniMesh(100,"mini_grass1");
mini_grass1->CreateFromMesh(temp_grass,true);
mini_grass1->SetAlphaSort(true);
mini_grass1->SetAlphaTest(true);
mini_grass1->SetBlendingMode(cTV_BLEND_ALPHA);
for(i=0;i<100;i++)
{
mini_grass1->EnableMiniMesh(i,true);
mini_grass1->SetPosition(i*100,land1->GetHeight(i*100,i*100),i*100,i);
}
当然,要建立出不同颜色的草还要用minimesh->setcolor()方法了。
mini_grass1->SetClamping(true);