本文整理汇总了C++中StdMat2::SetOpacity方法的典型用法代码示例。如果您正苦于以下问题:C++ StdMat2::SetOpacity方法的具体用法?C++ StdMat2::SetOpacity怎么用?C++ StdMat2::SetOpacity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StdMat2
的用法示例。
在下文中一共展示了StdMat2::SetOpacity方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
示例2: PanelProc
//.........这里部分代码省略.........
ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_SHOW );
ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_SHOW );
}
NotifyChanged();
// UpdateMtlDisplay();
}
break;
}
break;
case CC_COLOR_SEL: {
int id = LOWORD(wParam);
SelectEditColor(ColorIDCToIndex(id));
}
break;
case CC_COLOR_DROP: {
int id = LOWORD(wParam);
SelectEditColor(ColorIDCToIndex(id));
UpdateMtlDisplay();
}
break;
case CC_COLOR_BUTTONDOWN:
theHold.Begin();
break;
case CC_COLOR_BUTTONUP:
if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG));
else theHold.Cancel();
UpdateMtlDisplay();
break;
case CC_COLOR_CHANGE: {
int id = LOWORD(wParam);
int buttonUp = HIWORD(wParam);
int n = ColorIDCToIndex(id);
if (buttonUp) theHold.Begin();
Color curColor(cs[n]->GetColor());
SetMtlColor(n, curColor, pShader, cs, curTime);
if (buttonUp) {
theHold.Accept(GetString(IDS_DS_PARAMCHG));
// DS: 5/11/99- this was commented out. I put it back in, because
// it is necessary for the Reset button in the color picker to
// update the viewport.
UpdateMtlDisplay();
}
} break;
case WM_PAINT:
if (!valid) {
valid = TRUE;
ReloadDialog();
}
return FALSE;
case WM_CLOSE:
case WM_DESTROY:
break;
case CC_SPINNER_CHANGE:
if (!theHold.Holding()) theHold.Begin();
switch (id) {
case IDC_SH_SPIN:
pShader->SetGlossiness(PcToFrac(shSpin->GetIVal()), curTime);
UpdateHilite();
break;
case IDC_SS_SPIN:
pShader->SetSpecularLevel(PcToFrac(ssSpin->GetIVal()),curTime);
UpdateHilite();
break;
case IDC_SOFT_SPIN:
pShader->SetSoftenLevel(softSpin->GetFVal(),curTime);
break;
case IDC_SI_SPIN:
pShader->SetSelfIllum(PcToFrac(siSpin->GetIVal()),curTime);
break;
case IDC_DIFFLEV_SPIN:
pShader->SetDiffuseLevel(PcToFrac(dlevSpin->GetIVal()),curTime);
break;
case IDC_DIFFROUGH_SPIN:
pShader->SetDiffuseRoughness(PcToFrac(roughSpin->GetIVal()),curTime);
break;
//******** >>>><<<< required handling for opacity....must be present in all dialogs
case IDC_TR_SPIN:
pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime);
break;
}
// UpdateMtlDisplay();
break;
case CC_SPINNER_BUTTONDOWN:
theHold.Begin();
break;
case WM_CUSTEDIT_ENTER:
case CC_SPINNER_BUTTONUP:
if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER)
theHold.Accept(GetString(IDS_DS_PARAMCHG));
else
theHold.Cancel();
UpdateMtlDisplay();
break;
}
exit:
return FALSE;
}
示例3: PanelProc
INT_PTR StraussShaderDlg::PanelProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
int id = LOWORD(wParam);
int code = HIWORD(wParam);
switch (msg) {
case WM_INITDIALOG:
{
HDC theHDC = GetDC(hwndDlg);
hOldPal = GetGPort()->PlugPalette(theHDC);
ReleaseDC(hwndDlg,theHDC);
HWND hwndCS = GetDlgItem(hwndDlg, IDC_COLOR);
cs[0] = GetIColorSwatch( hwndCS, pShader->GetDiffuseClr(), GetString(IDS_KE_COLOR) );
hwHilite = GetDlgItem(hwndDlg, IDC_HIGHLIGHT);
DLSetWindowLongPtr( hwHilite, HiliteWndProc);
glSpin = SetupIntSpinner(hwndDlg, IDC_GL_SPIN, IDC_GL_EDIT, 0,100, 0);
mtSpin = SetupIntSpinner(hwndDlg, IDC_MT_SPIN, IDC_MT_EDIT, 0,100, 0);
trSpin = SetupIntSpinner(hwndDlg, IDC_TR_SPIN, IDC_TR_EDIT, 0,100, 0);
for (int j=0; j<NMBUTS; j++) {
texMBut[j] = GetICustButton(GetDlgItem(hwndDlg,texMButtonsIDC[j]));
assert( texMBut[j] );
texMBut[j]->SetRightClickNotify(TRUE);
texMBut[j]->SetDADMgr(&dadMgr);
}
LoadDialog(TRUE);
}
break;
case WM_COMMAND:
{
for ( int i=0; i<NMBUTS; i++) {
if (id == texMButtonsIDC[i]) {
PostMessage(hwmEdit,WM_TEXMAP_BUTTON, texmapFromMBut[i],(LPARAM)pMtl );
UpdateMapButtons();
goto exit;
}
}
}
break; // WM_COMMAND
case CC_COLOR_SEL: {
int id = LOWORD(wParam);
SelectEditColor(ColorIDCToIndex(id));
}
break;
case CC_COLOR_DROP: {
int id = LOWORD(wParam);
SelectEditColor(ColorIDCToIndex(id));
UpdateMtlDisplay();
}
break;
case CC_COLOR_BUTTONDOWN:
theHold.Begin();
break;
case CC_COLOR_BUTTONUP:
if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG));
else theHold.Cancel();
UpdateMtlDisplay();
break;
case CC_COLOR_CHANGE: {
int id = LOWORD(wParam);
int buttonUp = HIWORD(wParam);
int n = ColorIDCToIndex(id);
if (buttonUp) theHold.Begin();
Color curColor(cs[n]->GetColor());
pShader->SetDiffuseClr(curColor, curTime);
if (buttonUp) {
theHold.Accept(GetString(IDS_DS_PARAMCHG));
// DS: 5/11/99- this was commented out. I put it back in, because
// it is necessary for the Reset button in the color picker to
// update the viewport.
UpdateMtlDisplay();
}
} break;
case WM_PAINT:
if (!valid) {
valid = TRUE;
ReloadDialog();
}
return FALSE;
case WM_CLOSE:
case WM_DESTROY:
break;
case CC_SPINNER_CHANGE:
if (!theHold.Holding()) theHold.Begin();
switch (id) {
case IDC_GL_SPIN:
pShader->SetGlossiness(PcToFrac( glSpin->GetIVal() ), curTime);
UpdateHilite();
break;
case IDC_MT_SPIN:
pShader->SetMetalness(PcToFrac(mtSpin->GetIVal()), curTime);
break;
//******** >>>><<<< required handling for opacity....must be present in all dialogs
case IDC_TR_SPIN:
pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime);
//.........这里部分代码省略.........
示例4: PanelProc
//.........这里部分代码省略.........
case IDC_LOCK_DS:
SetLockDS(IsButtonChecked(hwndDlg, IDC_LOCK_DS));
UpdateMtlDisplay();
break;
case IDC_LOCK_ADTEX:{
BOOL on = IsButtonChecked(hwndDlg, IDC_LOCK_ADTEX);
SetLockADTex(on);
UpdateMtlDisplay();
} break;
}
break;
case CC_COLOR_SEL: {
int id = LOWORD(wParam);
SelectEditColor(ColorIDCToIndex(id));
}
break;
case CC_COLOR_DROP: {
int id = LOWORD(wParam);
SelectEditColor(ColorIDCToIndex(id));
UpdateMtlDisplay();
}
break;
case CC_COLOR_BUTTONDOWN:
theHold.Begin();
break;
case CC_COLOR_BUTTONUP:
if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG));
else theHold.Cancel();
UpdateMtlDisplay();
break;
case CC_COLOR_CHANGE: {
int id = LOWORD(wParam);
int buttonUp = HIWORD(wParam);
int n = ColorIDCToIndex(id);
if (buttonUp) theHold.Begin();
Color curColor(cs[n]->GetColor());
SetMtlColor(n, curColor, pShader, cs, curTime);
if (buttonUp) {
theHold.Accept(GetString(IDS_DS_PARAMCHG));
// DS: 5/11/99- this was commented out. I put it back in, because
// it is necessary for the Reset button in the color picker to
// update the viewport.
UpdateMtlDisplay();
}
} break;
case WM_PAINT:
if (!valid) {
valid = TRUE;
ReloadDialog();
}
return FALSE;
case WM_CLOSE:
case WM_DESTROY:
break;
case CC_SPINNER_CHANGE:
if (!theHold.Holding()) theHold.Begin();
switch (id) {
case IDC_GLX_SPIN:
pShader->SetGlossiness(ALPHA_MAX - PcToFrac( glxSpin->GetIVal() ) * ALPHA_SZ, curTime);
UpdateHilite();
break;
case IDC_GLY_SPIN:
pShader->SetGlossinessY(ALPHA_MAX - PcToFrac(glySpin->GetIVal()) * ALPHA_SZ, curTime);
UpdateHilite();
break;
case IDC_SLEV_SPIN:
pShader->SetSpecularLevel(SPEC_MAX * PcToFrac(slevSpin->GetIVal()),curTime);
UpdateHilite();
break;
case IDC_DLEV_SPIN:
pShader->SetDiffuseLevel(PcToFrac(dlevSpin->GetIVal()),curTime);
break;
//******** >>>><<<< required handling for opacity....must be present in all dialogs
case IDC_TR_SPIN:
pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime);
break;
}
// UpdateMtlDisplay();
break;
case CC_SPINNER_BUTTONDOWN:
theHold.Begin();
break;
case WM_CUSTEDIT_ENTER:
case CC_SPINNER_BUTTONUP:
if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER)
theHold.Accept(GetString(IDS_DS_PARAMCHG));
else
theHold.Cancel();
UpdateMtlDisplay();
break;
}
exit:
return FALSE;
}
示例5: 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()) {
//.........这里部分代码省略.........
示例6: createStandardMaterial
//------------------------------
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)
{
//.........这里部分代码省略.........