我正在努力了解我应该如何使用从 3DS Max 获得的材质和照明值来重新创建类似的照明。我从 3DS Max 导出的 Collada 文件中获取材质和照明,并使用它们在 OpenGL 中渲染场景。使用 Blinn-Phong 着色器渲染场景。然而,场景总是以明亮的方式结束。
3DS max 的光照数据对我来说似乎很奇怪。它由两盏灯组成,一个环境灯和一个只有单一颜色的定向灯。因为我不太确定这种单一颜色与什么相关,所以我将它应用于光的漫反射和镜面反射分量。
无论如何,有谁知道 3DS Max/Collada 的材质和光照数据有什么奇怪的地方吗?或者您是否成功使用它而没有任何问题,这意味着我只是做错了什么?
编辑#1
根据要求,这是来自 collada 的材料/照明信息。恐怕我无法发布任何屏幕截图,但是场景非常明亮,例如橙子变成了亮黄色。特别是镜面反射值似乎非常高,但它们似乎在 Max 中运行良好......
科拉达材料:
<library_effects>
<effect id="WorldTexture">
<profile_COMMON>
<newparam sid="world_texture_png-surface">
<surface type="2D">
<init_from>world_texture_png</init_from>
</surface>
</newparam>
<newparam sid="world_texture_png-sampler">
<sampler2D>
<source>world_texture_png-surface</source>
</sampler2D>
</newparam>
<technique sid="common">
<blinn>
<emission>
<color>0 0 0 1</color>
</emission>
<ambient>
<color>0.588 0.588 0.588 1</color>
</ambient>
<diffuse>
<texture texture="world_texture_png-sampler" texcoord="CHANNEL1"/>
</diffuse>
<specular>
<color>0.9 0.9 0.9 1</color>
</specular>
<shininess>
<float>10</float>
</shininess>
<reflective>
<color>0 0 0 1</color>
</reflective>
<transparent opaque="A_ONE">
<color>1 1 1 1</color>
</transparent>
<transparency>
<float>1</float>
</transparency>
</blinn>
</technique>
</profile_COMMON>
<extra>
<technique profile="OpenCOLLADA3dsMax">
<extended_shader>
<apply_reflection_dimming>0</apply_reflection_dimming>
<dim_level>0</dim_level>
<falloff_type>0</falloff_type>
<index_of_refraction>1.5</index_of_refraction>
<opacity_type>0</opacity_type>
<reflection_level>3</reflection_level>
<wire_size>1</wire_size>
<wire_units>0</wire_units>
</extended_shader>
<shader>
<ambient_diffuse_lock>1</ambient_diffuse_lock>
<ambient_diffuse_texture_lock>1</ambient_diffuse_texture_lock>
<diffuse_specular_lock>0</diffuse_specular_lock>
<soften>0.1</soften>
<use_self_illum_color>0</use_self_illum_color>
</shader>
</technique>
</extra>
</effect>
科拉达灯:
<library_lights>
<light id="EnvironmentAmbientLight" name="EnvironmentAmbientLight">
<technique_common>
<ambient>
<color>0.6235294 0.6235294 0.6235294</color>
</ambient>
</technique_common>
</light>
<light id="FDirect001-light" name="FDirect001">
<technique_common>
<directional>
<color>0.937255 0.7921569 0.5411765</color>
</directional>
</technique_common>
<extra>
<technique profile="OpenCOLLADA3dsMax">
<max_light>
<aspect_ratio>1</aspect_ratio>
<atmosphere_color_amount>1</atmosphere_color_amount>
<atmosphere_on>0</atmosphere_on>
<atmosphere_opacity>1</atmosphere_opacity>
<attenuation_far_end>100</attenuation_far_end>
<attenuation_far_start>80</attenuation_far_start>
<attenuation_near_end>26.8</attenuation_near_end>
<attenuation_near_start>0</attenuation_near_start>
<contrast>0</contrast>
<decay_falloff>40</decay_falloff>
<decay_type>0</decay_type>
<diffuse_soften>0</diffuse_soften>
<falloff>902</falloff>
<hotspot_beam>900</hotspot_beam>
<multiplier>0.5</multiplier>
<overshoot>0</overshoot>
<shadow_density>1</shadow_density>
<shadow_map>0</shadow_map>
<target_distance>440</target_distance>
<use_far_attenuation>0</use_far_attenuation>
<use_near_attenuation>0</use_near_attenuation>
</max_light>
</technique>
</extra>
</light>
</library_lights>