Sample Code: Zebra Striping

Version: HPS 2022
Language: C++
Description:

This sample code shows how to apply Zebra Striping using Channel::EnvironmentTexture with Parameterization::ReflectionVector

void CHPSView::OnUserCode()
{
	HPS::SegmentKey modelKey = GetCanvas().GetFrontView().GetAttachedModel().GetSegmentKey();
	ImageKit imageKit;
	
	UTF8 file_in = "zebra.jpg";
	Image::ImportOptionsKit importOptionsKit;
	importOptionsKit.SetFormat(Image::Format::Jpeg);
	imageKit = Image::File::Import(static_cast<const char*>(file_in), importOptionsKit);

	PortfolioKeyArray portfolios;
	PortfolioKey pKey;
	ImageDefinition imageDefinition;
	TextureOptionsKit textureOptionsKit;

	modelKey.GetPortfolioControl().Show(portfolios);
	pKey = portfolios[0];
	imageDefinition = pKey.DefineImage("zebra_texture", imageKit);

	textureOptionsKit.SetParameterizationSource(Material::Texture::Parameterization::ReflectionVector);
	pKey.DefineTexture("zebra", imageDefinition, textureOptionsKit);

	HPS::SegmentKey mySegmentKey = modelKey.Subsegment("geometry");
	HPS::CylinderKey cylinderKey = mySegmentKey.InsertCylinder(
		Point(5, 5, 10),  Point(-7, -5, -10), 5, 
		HPS::Cylinder::Capping::Both);

	mySegmentKey.GetMaterialMappingControl()
		.SetFaceTexture("zebra", Material::Texture::Channel::EnvironmentTexture);

	GetCanvas().Update();
}