本文整理汇总了C++中StdMat2类的典型用法代码示例。如果您正苦于以下问题:C++ StdMat2类的具体用法?C++ StdMat2怎么用?C++ StdMat2使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了StdMat2类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TSTR
bool CollisionImport::ImportBase(bhkRigidBodyRef body, bhkShapeRef shape, INode* parent, INode *shapeNode, Matrix3& tm)
{
// Now do common post processing for the node
if (shapeNode != NULL)
{
shapeNode->SetName( TSTR(shape->GetType().GetTypeName().c_str()) );
if (!tm.IsIdentity())
{
Point3 pos = tm.GetTrans();
Quat rot(tm);
PosRotScaleNode(shapeNode, pos, rot, 1.0, prsDefault);
}
// Wireframe Red color
StdMat2 *collMat = NewDefaultStdMat();
collMat->SetDiffuse(Color(1.0f, 0.0f, 0.0f), 0);
collMat->SetWire(TRUE);
collMat->SetFaceted(TRUE);
ni.gi->GetMaterialLibrary().Add(collMat);
shapeNode->SetMtl(collMat);
shapeNode->SetPrimaryVisibility(FALSE);
shapeNode->SetSecondaryVisibility(FALSE);
shapeNode->BoneAsLine(TRUE);
shapeNode->SetRenderable(FALSE);
//shapeNode->XRayMtl(TRUE);
shapeNode->SetWireColor( RGB(255,0,0) );
if (parent)
parent->AttachChild(shapeNode);
return true;
}
return false;
}
示例2: mnmesh
void bhkProxyObject::CreateMesh()
{
if (Interface *gi = this->mIP)
{
if (const Mesh* pMesh = &this->proxyMesh)
{
if (TriObject *triObject = CreateNewTriObject())
{
MNMesh mnmesh(*pMesh);
Mesh& mesh = triObject->GetMesh();
mnmesh.OutToTri(mesh);
INode *node = gi->CreateObjectNode(triObject);
// Wireframe Red color
StdMat2 *collMat = NewDefaultStdMat();
collMat->SetDiffuse(Color(1.0f, 0.0f, 0.0f), 0);
collMat->SetWire(TRUE);
collMat->SetFaceted(TRUE);
gi->GetMaterialLibrary().Add(collMat);
node->SetMtl(collMat);
node->SetPrimaryVisibility(FALSE);
node->SetSecondaryVisibility(FALSE);
node->BoneAsLine(TRUE);
node->SetRenderable(FALSE);
node->SetWireColor( RGB(255,0,0) );
gi->SelectNode(node);
}
}
}
}
示例3: FindOrCreateMaterial
Mtl* FindOrCreateMaterial(MtlBaseLib* library, Interface* max_interface, int& slot, const IfcGeom::Material& material) {
Mtl* m = FindMaterialByName(library, material.name());
if (m == 0) {
StdMat2* stdm = NewDefaultStdMat();
const TimeValue t = -1;
if (material.hasDiffuse()) {
const double* diffuse = material.diffuse();
stdm->SetDiffuse(Color(diffuse[0], diffuse[1], diffuse[2]),t);
}
if (material.hasSpecular()) {
const double* specular = material.specular();
stdm->SetSpecular(Color(specular[0], specular[1], specular[2]),t);
}
if (material.hasSpecularity()) {
stdm->SetShininess(material.specularity(), t);
}
if (material.hasTransparency()) {
stdm->SetOpacity(1.0 - material.transparency(), t);
}
m = stdm;
m->SetName(S(material.name()));
library->Add(m);
if (slot < NUM_MATERIAL_SLOTS) {
max_interface->PutMtlToMtlEditor(m,slot++);
}
}
return m;
}
示例4: assert
//------------------------------
void MaterialCreator::assignTextureToMaterial( Mtl* material, int slot, BitmapTex* texture )
{
if ( !material )
return;
assert( (slot >= 0) && (slot < NTEXMAPS) );
// Assign it to the material
material->SetSubTexmap(slot, texture);
// For diffuse textures, view them in the viewport
if (slot == ID_DI)
{
// From Sparks Knowledge-base: "Topic: How to Activate a Texmap in viewport using API ??"
material->SetActiveTexmap(texture);
material->SetMtlFlag(MTL_TEX_DISPLAY_ENABLED);
material->NotifyDependents(FOREVER, (PartID) PART_ALL, REFMSG_CHANGE);
}
// Read in the transparency mode for opacity textures
if (slot == ID_OP)
{
// BOOL isAlphaTranslucency = effect->GetTransparencyMode() == FCDEffectStandard::A_ONE;
// texture->SetAlphaAsMono(isAlphaTranslucency);
// texture->SetAlphaAsRGB(!isAlphaTranslucency);
}
if (material->ClassID().PartA() == DMTL2_CLASS_ID || material->ClassID().PartA() == DMTL_CLASS_ID)
{
StdMat2* stdMat = (StdMat2*) material;
// Override the default amount set here, the final amount will
// be decided by the amount multipliers on the textures them selves
stdMat->SetTexmapAmt(slot, 1.0f, 0);
}
}
示例5: FracToPc
void StraussShaderDlg::LoadDialog(BOOL draw)
{
if (pShader && hRollup) {
glSpin->SetValue( FracToPc( pShader->GetGlossiness() ),FALSE);
glSpin->SetKeyBrackets(KeyAtCurTime(st_glossiness));
mtSpin->SetValue( FracToPc( pShader->GetMetalness() ), FALSE);
mtSpin->SetKeyBrackets(KeyAtCurTime(st_metalness));
trSpin->SetValue(FracToPc(pMtl->GetOpacity(curTime)),FALSE);
trSpin->SetKeyBrackets(pMtl->KeyAtTimeByID(OPACITY_PARAM, curTime));
UpdateColSwatches();
UpdateHilite();
IParamBlock2 * shaderpblock = pShader->pblock;
if ( shaderpblock ) {
cs[0]->UpdateEnableState( shaderpblock, shaderpblock->GetAnimNum( st_diffuse ) );
glSpin->UpdateEnableState( shaderpblock, shaderpblock->GetAnimNum( st_glossiness ) );
mtSpin->UpdateEnableState( shaderpblock, shaderpblock->GetAnimNum( st_metalness ) );
}
// trSpin: opacity is accessed through the material: only handle StdMat2.
EnableMtl2OpacityControl( pMtl, trSpin );
}
}
示例6: mnmesh
void bhkRigidBodyModifier::CreateMesh()
{
if (Interface *gi = this->mIP)
{
if (const Mesh* pMesh = this->GetMesh())
{
if (TriObject *triObject = CreateNewTriObject())
{
MNMesh mnmesh(*pMesh);
Mesh& mesh = triObject->GetMesh();
mnmesh.buildNormals();
mnmesh.OutToTri(mesh);
INode *node = gi->CreateObjectNode(triObject);
// Wireframe Red color
StdMat2 *collMat = NewDefaultStdMat();
collMat->SetDiffuse(Color(1.0f, 0.0f, 0.0f), 0);
collMat->SetWire(TRUE);
collMat->SetFaceted(TRUE);
gi->GetMaterialLibrary().Add(collMat);
node->SetMtl(collMat);
node->SetPrimaryVisibility(FALSE);
node->SetSecondaryVisibility(FALSE);
node->BoneAsLine(TRUE);
node->SetRenderable(FALSE);
node->SetWireColor( RGB(255,0,0) );
if (gi->GetSelNodeCount() == 1)
{
if (INode *snode = gi->GetSelNode(0))
{
Matrix3 tm = snode->GetObjTMAfterWSM(0, NULL);
node->SetNodeTM(0, tm);
}
}
gi->SelectNode(node);
}
}
}
}
示例7: sprintf
StdMat2* M2Importer::createMaterial()
{
static int i = 1;
TCHAR matName[128];
sprintf(matName, "%02d - Default", i++);
StdMat2* material = NewDefaultStdMat();
material->SetName(matName);
material->SetAmbient(Color(1.0f, 1.0f, 1.0f), 0);
material->SetDiffuse(Color(1.0f, 1.0f, 1.0f), 0);
material->SetSpecular(Color(1.0f, 1.0f, 1.0f), 0);
material->SetShininess(0.5f, 0);
material->SetShinStr(0.7f, 0);
material->SetMtlFlag(MTL_DISPLAY_ENABLE_FLAGS, TRUE);
return material;
}
示例8: createGroupHeaderNode
//.........这里部分代码省略.........
// 顶点坐标和UV
for (unsigned int i = 0; i < geosetData.vcount; ++i)
{
ModelVertex& vertexData = m_globalVertices[ verDataIndex[geosetData.vstart + i] ];
mesh.verts[i] = *(Point3*)(&vertexData.pos);
// UV坐标反转
mesh.tVerts[i].x = vertexData.texcoords.x;
mesh.tVerts[i].y = 1.0f - vertexData.texcoords.y;
}
// 三角形
for (unsigned int i = 0; i < triangeCount; ++i)
{
Face& face = mesh.faces[i];
face.setVerts(triData[geosetData.istart + i*3] - m_indexCount,
triData[geosetData.istart + i*3+1] - m_indexCount,
triData[geosetData.istart + i*3+2] - m_indexCount);
face.Show();
face.setEdgeVisFlags(EDGE_VIS, EDGE_VIS, EDGE_VIS);
TVFace& tface = mesh.tvFace[i];
tface.setTVerts(triData[geosetData.istart + i*3] - m_indexCount,
triData[geosetData.istart + i*3+1] - m_indexCount,
triData[geosetData.istart + i*3+2] - m_indexCount);
}
// 法线
mesh.SpecifyNormals();
MeshNormalSpec *specNorms = mesh.GetSpecifiedNormals();
if (specNorms)
{
specNorms->ClearAndFree();
specNorms->SetNumFaces(triangeCount);
specNorms->SetNumNormals(geosetData.vcount);
Point3* norms = specNorms->GetNormalArray();
for (unsigned int i = 0; i < geosetData.vcount; ++i)
{
ModelVertex& vertexData = m_globalVertices[ verDataIndex[geosetData.vstart + i] ];
norms[i] = *(Point3*)(&vertexData.normal);
}
MeshNormalFace* pFaces = specNorms->GetFaceArray();
for (unsigned int i = 0; i < triangeCount; ++i)
{
pFaces[i].SpecifyNormalID(0, triData[geosetData.istart + i*3] - m_indexCount);
pFaces[i].SpecifyNormalID(1, triData[geosetData.istart + i*3+1] - m_indexCount);
pFaces[i].SpecifyNormalID(2, triData[geosetData.istart + i*3+2] - m_indexCount);
}
specNorms->SetAllExplicit(true);
specNorms->CheckNormals();
}
// 删除重复的和无效的面
mesh.RemoveDegenerateFaces();
mesh.RemoveIllegalFaces();
//realINode->BackCull(FALSE); // 取消背面裁减 双面绘制与取消背面裁减一起设置
realINode->EvalWorldState(0);
// 索引值修正
m_indexCount += geosetData.vcount;
}
// 加载材质
unsigned short* texLookupData = (unsigned short*)(m_m2FileData + m_modelHeader->ofsTexLookup);
ModelTextureDef* texUnitDefData = (ModelTextureDef*)(m_m2FileData + m_modelHeader->ofsTextures);
ModelTexUnit* texUnitData = (ModelTexUnit*)(m_m2FileData + m_modelView->ofsTex);
for (unsigned int i = 0; i < m_modelView->nTex; ++i)
{
ModelTexUnit& texUnit = texUnitData[i];
unsigned short textureID = texLookupData[texUnit.textureid];
ModelTextureDef& texDef = texUnitDefData[textureID];
string textureName;
if (texDef.type == 0)
textureName = (LPCSTR)(m_m2FileData + texDef.nameOfs);
else
textureName = getReplacableTexture(texDef.type);
StdMat2* material = m_materialList[texUnit.op];
if (!material)
material = createMaterial();
// 根据混合属性决定加在第几层
material->SetSubTexmap(ID_DI, createTexture(textureName.c_str()));
material->EnableMap(ID_DI, TRUE);
//material->SetTwoSided(TRUE); // 双面 设置了此标志的才打开
m_maxInterface->GetMaterialLibrary().Add(material);
m_geosetNodeList[texUnit.op]->SetMtl(material);
}
m_maxInterface->RedrawViews(m_maxInterface->GetTime());
}
示例9: NewDefaultStdMat
StdMat2 *NifImporter::ImportMaterialAndTextures(ImpNode *node, NiAVObjectRef avObject)
{
// Texture
NiMaterialPropertyRef matRef = avObject->GetPropertyByType(NiMaterialProperty::TYPE);
if (matRef != NULL){
StdMat2 *m = NewDefaultStdMat();
m->SetName(matRef->GetName().c_str());
if (showTextures) {
m->SetMtlFlag(MTL_DISPLAY_ENABLE_FLAGS, TRUE);
}
// try the civ4 shader first then default back to normal shaders
if (ImportNiftoolsShader(node, avObject, m)) {
return m;
}
NiTexturingPropertyRef texRef = avObject->GetPropertyByType(NiTexturingProperty::TYPE);
NiWireframePropertyRef wireRef = avObject->GetPropertyByType(NiWireframeProperty::TYPE);
NiAlphaPropertyRef alphaRef = avObject->GetPropertyByType(NiAlphaProperty::TYPE);
NiStencilPropertyRef stencilRef = avObject->GetPropertyByType(NiStencilProperty::TYPE);
NiShadePropertyRef shadeRef = avObject->GetPropertyByType(NiShadeProperty::TYPE);
vector<NiPropertyRef> props = avObject->GetProperties();
if (IsFallout3()) {
m->SetAmbient(Color(0.588f, 0.588f, 0.588f),0);
m->SetDiffuse(Color(0.588f, 0.588f, 0.588f),0);
m->SetSpecular(Color(0.902f, 0.902f, 0.902f),0);
} else {
m->SetAmbient(TOCOLOR(matRef->GetAmbientColor()),0);
m->SetDiffuse(TOCOLOR(matRef->GetDiffuseColor()),0);
m->SetSpecular(TOCOLOR(matRef->GetSpecularColor()),0);
}
Color c = TOCOLOR(matRef->GetEmissiveColor());
if (c.r != 0 || c.b != 0 || c.g != 0) {
m->SetSelfIllumColorOn(TRUE);
m->SetSelfIllumColor(c,0);
}
m->SetShinStr(0.0,0);
m->SetShininess(matRef->GetGlossiness()/100.0,0);
m->SetOpacity(matRef->GetTransparency(),0);
bool hasShaderAttributes = (wireRef != NULL) || (stencilRef != NULL) || (shadeRef != NULL);
if (m->SupportsShaders() && hasShaderAttributes) {
if (Shader *s = m->GetShader()) {
if (wireRef != NULL && (wireRef->GetFlags() & 1)) {
BOOL value = TRUE;
m->SetWire(value);
}
if (stencilRef != NULL) {
if (stencilRef->GetFaceDrawMode() == DRAW_BOTH) {
BOOL value = TRUE;
m->SetTwoSided(value);
}
}
if (shadeRef != NULL && shadeRef->GetFlags() & 1) {
m->SetFaceted(TRUE);
}
}
}
if (NULL != texRef)
{
// Handle Base/Detail ???
if (texRef->HasTexture(DECAL_0_MAP)){
if (Texmap* tex = CreateTexture(texRef->GetTexture(DECAL_0_MAP)))
m->SetSubTexmap(ID_DI, tex);
if (texRef->HasTexture(BASE_MAP)){
m->LockAmbDiffTex(FALSE);
if (Texmap* tex = CreateTexture(texRef->GetTexture(BASE_MAP)))
m->SetSubTexmap(ID_AM, tex);
}
} else if (texRef->HasTexture(BASE_MAP)) {
if (Texmap* tex = CreateTexture(texRef->GetTexture(BASE_MAP))) {
m->SetSubTexmap(ID_DI, tex);
if (showTextures) gi->ActivateTexture(tex,m);
}
}
// Handle Bump map
if (texRef->HasTexture(BUMP_MAP)) {
if (Texmap* tex = CreateTexture(texRef->GetTexture(BUMP_MAP)))
m->SetSubTexmap(ID_BU, CreateNormalBump(NULL, tex));
}
// Shiny map
if (texRef->HasTexture(GLOSS_MAP)) {
if (Texmap* tex = CreateTexture(texRef->GetTexture(GLOSS_MAP)))
m->SetSubTexmap(ID_SS, tex);
}
// Self illumination
if (texRef->HasTexture(GLOW_MAP)) {
if (Texmap* tex = CreateTexture(texRef->GetTexture(GLOW_MAP)))
m->SetSubTexmap(ID_SI, tex);
}
// Custom Shader Handling
int nTex = texRef->GetShaderTextureCount();
if (nTex > 0) {
list<NiExtraDataRef> data = avObject->GetExtraData();
NiGeometryRef trigeom = DynamicCast<NiGeometry>(avObject);
if (trigeom->HasShader()) {
//.........这里部分代码省略.........
示例10: assert
// --[ Method ]---------------------------------------------------------------
//
// - Class : CStravaganzaMaxTools
//
// - prototype : bool BuildShaders()
//
// - Purpose : Builds the shader list from MAX's materials.
// Preview mode requires texture files to be stored with full
// path in order to load them. When we export, we only store the
// filename. Another thing is that in the export mode, we copy
// all textures into the path specified by the user if that
// option is checked.
//
// -----------------------------------------------------------------------------
bool CStravaganzaMaxTools::BuildShaders()
{
std::vector<Mtl*>::iterator it;
assert(m_vecShaders.empty());
if(!m_bPreview && m_bCopyTextures && m_strTexturePath == "")
{
CLogger::NotifyWindow("Textures won't be copied\nSpecify a valid output texture path first");
}
LOG.Write("\n\n-Building shaders: ");
for(it = m_vecMaterials.begin(); it != m_vecMaterials.end(); ++it)
{
Mtl* pMaxMaterial = *it;
assert(pMaxMaterial);
LOG.Write("\n %s", pMaxMaterial->GetName().data());
CShaderStandard* pShaderStd = new CShaderStandard;
pShaderStd->SetName(pMaxMaterial->GetName().data());
// Properties
StdMat2 *pMaxStandardMtl = NULL;
StdMat2 *pMaxBakedMtl = NULL;
float fAlpha;
if(pMaxMaterial->ClassID() == Class_ID(DMTL_CLASS_ID, 0))
{
pMaxStandardMtl = (StdMat2 *)pMaxMaterial;
}
else if(pMaxMaterial->ClassID() == Class_ID(BAKE_SHELL_CLASS_ID, 0))
{
pMaxStandardMtl = (StdMat2 *)pMaxMaterial->GetSubMtl(0);
pMaxBakedMtl = (StdMat2 *)pMaxMaterial->GetSubMtl(1);
}
if(pMaxStandardMtl)
{
// Standard material
fAlpha = pMaxStandardMtl->GetOpacity(0);
Shader* pMaxShader = pMaxStandardMtl->GetShader();
CVector4 v4Specular = ColorToVector4(pMaxStandardMtl->GetSpecular(0), 0.0f) * pMaxShader->GetSpecularLevel(0, 0);
pShaderStd->SetAmbient (ColorToVector4(pMaxStandardMtl->GetAmbient(0), 0.0f));
pShaderStd->SetDiffuse (ColorToVector4(pMaxStandardMtl->GetDiffuse(0), fAlpha));
pShaderStd->SetSpecular (v4Specular);
pShaderStd->SetShininess(pMaxShader->GetGlossiness(0, 0) * 128.0f);
if(pMaxStandardMtl->GetTwoSided() == TRUE)
{
pShaderStd->SetTwoSided(true);
}
// Need to cast to StdMat2 in order to get access to IsFaceted().
// ¿Is StdMat2 always the interface for standard materials?
if(((StdMat2*)pMaxStandardMtl)->IsFaceted())
{
pShaderStd->SetFaceted(true);
}
if(pMaxStandardMtl->GetWire() == TRUE)
{
pShaderStd->SetPostWire(true);
pShaderStd->SetWireLineThickness(pMaxStandardMtl->GetWireSize(0));
}
}
else
{
// Material != Standard
fAlpha = 1.0f; // pMaxMaterial->GetXParency();
pShaderStd->SetAmbient (ColorToVector4(pMaxMaterial->GetAmbient(), 0.0f));
pShaderStd->SetDiffuse (ColorToVector4(pMaxMaterial->GetDiffuse(), fAlpha));
pShaderStd->SetSpecular (CVector4(0.0f, 0.0f, 0.0f, 0.0f));
pShaderStd->SetShininess(0.0f);
}
// Layers
//.........这里部分代码省略.........
示例11: NewDefaultStdMat
//------------------------------
StdMat2* MaterialCreator::createStandardMaterial( const COLLADAFW::EffectCommon& effectCommon, const String& name, const MaterialCreator::MaterialIdentifier& materialIdentifier )
{
StdMat2* material = NewDefaultStdMat();
COLLADAFW::EffectCommon::ShaderType shaderType = effectCommon.getShaderType();
switch ( shaderType )
{
case COLLADAFW::EffectCommon::SHADER_CONSTANT:
material->SetFaceted(true); // BUG393: Max actually does not support a constant shader!
case COLLADAFW::EffectCommon::SHADER_BLINN:
material->SwitchShader(Class_ID(StandardMaterial::STD2_BLINN_SHADER_CLASS_ID, 0));
break;
case COLLADAFW::EffectCommon::SHADER_LAMBERT:
case COLLADAFW::EffectCommon::SHADER_PHONG:
case COLLADAFW::EffectCommon::SHADER_UNKNOWN:
default:
material->SwitchShader(Class_ID(StandardMaterial::STD2_PHONG_CLASS_ID, 0));
break;
}
// Retrieve the shader parameter blocks
Shader* materialShader = material->GetShader();
IParamBlock2* shaderParameters = (IParamBlock2*) materialShader->GetReference(0);
IParamBlock2* extendedParameters = (IParamBlock2*) material->GetReference(StandardMaterial::EXTENDED_PB_REF);
// Common material parameters
material->SetName(name.c_str());
const COLLADAFW::ColorOrTexture& diffuse = effectCommon.getDiffuse();
if ( diffuse.isColor() )
material->SetDiffuse( toMaxColor(diffuse), 0);
const COLLADAFW::ColorOrTexture& emission = effectCommon.getEmission();
if ( emission.isColor() )
{
material->SetSelfIllumColorOn(TRUE);
material->SetSelfIllumColor( toMaxColor(emission), 0);
}
else
{
material->SetSelfIllumColorOn(FALSE);
material->SetSelfIllum( 0, 0 );
}
float maxOpacity = 1;
const COLLADAFW::ColorOrTexture& opacity = effectCommon.getOpacity();
if ( opacity.isColor() )
{
const COLLADAFW::Color& opacityColor = opacity.getColor();
float averageTransparent = (float)(opacityColor.getRed() + opacityColor.getGreen() + opacityColor.getBlue())/3;
maxOpacity = averageTransparent;
}
if ( getDocumentImporter()->getInvertTransparency() )
{
maxOpacity = 1 - maxOpacity;
}
// Max seems to like to have opacity 0 for opacity textures
if ( opacity.isTexture() )
{
material->SetOpacity( 0, 0);
}
else
{
material->SetOpacity( maxOpacity, 0);
}
if (shaderType != COLLADAFW::EffectCommon::SHADER_CONSTANT && shaderType != COLLADAFW::EffectCommon::SHADER_UNKNOWN)
{
// Unlock the ambient and diffuse colors
materialShader->SetLockAD(FALSE);
materialShader->SetLockADTex(FALSE);
material->LockAmbDiffTex(FALSE);
material->SyncADTexLock(FALSE);
// Lambert/Phong material parameters
const COLLADAFW::ColorOrTexture& ambient = effectCommon.getAmbient();
if ( ambient.isColor() )
material->SetAmbient( toMaxColor(ambient), 0);
}
else
{
// Approximate constant shader, specular is the same color
if ( diffuse.isColor() )
material->SetSpecular( toMaxColor(diffuse), 0 );
}
const COLLADAFW::ColorOrTexture& specular = effectCommon.getSpecular();
const COLLADAFW::FloatOrParam& shininessFloatOrParam = effectCommon.getShininess();
float shininess = 1;
if ( shininessFloatOrParam.getType() == COLLADAFW::FloatOrParam::FLOAT )
{
shininess = shininessFloatOrParam.getFloatValue();
}
if ( shaderType == COLLADAFW::EffectCommon::SHADER_PHONG || shaderType == COLLADAFW::EffectCommon::SHADER_BLINN)
{
//.........这里部分代码省略.........
示例12: LoadDialog
void WardShaderDlg::LoadDialog(BOOL draw)
{
if (pShader && hRollup) {
dlevSpin->SetValue(FracToPc(pShader->GetDiffuseLevel()),FALSE);
dlevSpin->SetKeyBrackets(KeyAtCurTime(PB_DIFFUSE_LEV));
slevSpin->SetValue(FracToPc(pShader->GetSpecularLevel()/SPEC_MAX),FALSE);
slevSpin->SetKeyBrackets(KeyAtCurTime(PB_SPECULAR_LEV));
glxSpin->SetValue( 100.0f * ((ALPHA_MAX - pShader->GetGlossiness())/ALPHA_SZ),FALSE);
glxSpin->SetKeyBrackets(KeyAtCurTime(PB_GLOSSINESS_X));
glySpin->SetValue(100.0f * ((ALPHA_MAX - pShader->GetGlossinessY())/ALPHA_SZ),FALSE);
glySpin->SetKeyBrackets(KeyAtCurTime(PB_GLOSSINESS_Y));
trSpin->SetValue(FracToPc(pMtl->GetOpacity( curTime )),FALSE);
trSpin->SetKeyBrackets(pMtl->KeyAtTime(OPACITY_PARAM, curTime));
CheckButton(hRollup, IDC_LOCK_AD, pShader->GetLockAD() );
CheckButton(hRollup, IDC_LOCK_DS, pShader->GetLockDS() );
SetCheckBox(hRollup, IDC_NORMALIZE_CHECK, !pShader->GetNormalizeOn() );
UpdateLockADTex( FALSE ); //don't send to mtl
UpdateColSwatches();
UpdateHilite();
}
}
示例13: UpdateMapButtons
void OrenNayarShaderDlg::UpdateMapButtons()
{
for ( long i = 0; i < NMBUTS; ++i ) {
int nMap = texmapFromMBut[ i ];
int state = pMtl->GetMapState( nMap );
texMBut[i]->SetText( mapStates[ state ] );
TSTR nm = pMtl->GetMapName( nMap );
texMBut[i]->SetTooltip(TRUE,nm);
}
}
示例14: LoadDialog
void OrenNayarShaderDlg::LoadDialog(BOOL draw)
{
if (pShader && hRollup) {
shSpin->SetValue(FracToPc(pShader->GetGlossiness()),FALSE);
shSpin->SetKeyBrackets(KeyAtCurTime(onb_glossiness));
ssSpin->SetValue(FracToPc(pShader->GetSpecularLevel()),FALSE);
ssSpin->SetKeyBrackets(KeyAtCurTime(onb_specular_level));
softSpin->SetValue(pShader->GetSoftenLevel(),FALSE);
softSpin->SetKeyBrackets(KeyAtCurTime(onb_soften));
trSpin->SetValue(FracToPc(pMtl->GetOpacity( curTime )),FALSE);
trSpin->SetKeyBrackets(pMtl->KeyAtTime(OPACITY_PARAM, curTime));
dlevSpin->SetValue(FracToPc(pShader->GetDiffuseLevel()),FALSE);
dlevSpin->SetKeyBrackets(KeyAtCurTime(onb_diffuse_level));
roughSpin->SetValue(FracToPc(pShader->GetDiffuseRoughness()),FALSE);
roughSpin->SetKeyBrackets(KeyAtCurTime(onb_roughness));
CheckButton(hRollup, IDC_LOCK_AD, pShader->GetLockAD() );
CheckButton(hRollup, IDC_LOCK_DS, pShader->GetLockDS() );
UpdateLockADTex( FALSE ); //don't send to mtl
BOOL colorSelfIllum = pShader->IsSelfIllumClrOn();
SetCheckBox(hRollup,IDC_SI_COLORON, colorSelfIllum );
if( colorSelfIllum ) {
// ShowWindow( siSpin->GetHwnd(), SW_HIDE );
ShowWindow( GetDlgItem(hRollup, IDC_SI_EDIT), SW_HIDE );
ShowWindow( GetDlgItem(hRollup, IDC_SI_SPIN), SW_HIDE );
ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_SHOW );
} else {
// disable the color swatch
ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_HIDE );
// show self-illum slider
// ShowWindow( siSpin->GetHwnd(), SW_SHOW );
ShowWindow( GetDlgItem(hRollup, IDC_SI_EDIT), SW_SHOW );
ShowWindow( GetDlgItem(hRollup, IDC_SI_SPIN), SW_SHOW );
siSpin->SetValue(FracToPc(pShader->GetSelfIllum()), FALSE);
siSpin->SetKeyBrackets(KeyAtCurTime(onb_self_illum_amnt));
}
UpdateColSwatches();
UpdateHilite();
}
}
示例15: UpdateLockADTex
void WardShaderDlg::UpdateLockADTex( BOOL passOn) {
int lock = pShader->GetLockADTex();
CheckButton(hRollup, IDC_LOCK_ADTEX, lock);
ShowWindow(GetDlgItem(hRollup, IDC_MAPON_AM), !lock);
texMBut[ 0 ]->Enable(!lock);
if ( passOn )
pMtl->SyncADTexLock( lock );
// UpdateMtlDisplay();
}