|
|
ManualObject * cylinder = pSceneManager->createManualObject("cylinder_name");
float const radius = 300,
thickness = 300, // Of course this must be less than the radius value.
accuracy = 0.04;
unsigned point_index = 0;
for(float theta = 0; theta <= 2 * Math: I; theta += Math::PI / (radius * accuracy)) {
cylinder->begin("Examples/MyRocky", RenderOperation::OT_TRIANGLE_STRIP);
cylinder->position((radius - thickness) * cos(theta - Math::PI / (radius * accuracy)),0,(radius - thickness) * sin(theta - Math::PI / (radius * accuracy)));
cylinder->textureCoord(0,0);
cylinder->position(radius * cos(theta - Math::PI / (radius * accuracy)),0,radius * sin(theta - Math::PI / (radius * accuracy)));
cylinder->textureCoord(1,0);
cylinder->position(radius * cos(theta),0,radius * sin(theta));
cylinder->textureCoord(1,1);
cylinder->position((radius - thickness) * cos(theta),0,(radius - thickness) * sin(theta));
cylinder->textureCoord(0,1);
cylinder->end();
///////////////////////////////////////////////////////////////////////
cylinder->begin("Examples/MyRocky", RenderOperation::OT_TRIANGLE_STRIP);
cylinder->position((radius - thickness) * cos(theta - Math::PI / (radius * accuracy)),1000,(radius - thickness) * sin(theta - Math::PI / (radius * accuracy)));
cylinder->textureCoord(0,0);
cylinder->position(radius * cos(theta - Math::PI / (radius * accuracy)),1000,radius * sin(theta - Math::PI / (radius * accuracy)));
cylinder->textureCoord(1,0);
cylinder->position(radius * cos(theta),1000,radius * sin(theta));
cylinder->textureCoord(1,1);
cylinder->position((radius - thickness) * cos(theta),1000,(radius - thickness) * sin(theta));
cylinder->textureCoord(0,1);
cylinder->end();
///////////////////////////////////////////////////////////////////////
//这下面代码是画柱的侧面的!!!可是textureCoord()怎么计算圆柱的纹理坐标呀?
double u,v;
cylinder->begin("Examples/MyRocky", RenderOperation::OT_TRIANGLE_STRIP);
cylinder->position(radius * cos(theta - Math::PI / (radius * accuracy)),0,radius * sin(theta - Math::PI / (radius * accuracy)));
this->GetUV(radius * cos(theta - Math::PI / (radius * accuracy)),0,radius * sin(theta - Math::PI / (radius * accuracy)),u,v);
cylinder->textureCoord(u,v);
cylinder->position(radius * cos(theta),0,radius * sin(theta));
this->GetUV(radius * cos(theta),0,radius * sin(theta),u,v);
cylinder->textureCoord(u,v);
cylinder->position(radius * cos(theta - Math::PI / (radius * accuracy)),1000,radius * sin(theta - Math::PI / (radius * accuracy)));
this->GetUV(radius * cos(theta - Math::PI / (radius * accuracy)),1000,radius * sin(theta - Math::PI / (radius * accuracy)),u,v);
cylinder->textureCoord(u,v);
cylinder->position(radius * cos(theta),1000,radius * sin(theta));
this->GetUV(radius * cos(theta),1000,radius * sin(theta),u,v);
cylinder->textureCoord(u,v);
cylinder->end();
}
/////////////////////////////////////////////////
请问如果计算圆柱侧面的纹理坐标呀? |
-
|