如何在OpenGL中使用3ds max中的光照值

时间:2012-06-21 15:57:52

标签: opengl lighting 3dsmax material

我很难看到如何使用从3DS Max获得的材质和光照值来重建类似的光照。我正在从3DS Max导出的Collada文件中获取材质和光照,并使用它们在OpenGL中渲染场景。使用Blinn-Phong着色器渲染场景。然而,场景总是以明亮的方式结束。

来自3DS max的光数据对我来说似乎很奇怪。它由两个灯组成,一个环境光和一个只有一种颜色的定向灯。由于我不太清楚这种单一颜色的含义,我已将它应用于光的漫反射和镜面反射分量。

无论如何,有没有人知道3DS Max / Collada材料和灯光数据是否有些奇怪?或者你成功地使用它没有任何问题意味着我只是做错了什么?

编辑#1

根据要求,继承了collada的材料/灯光信息。我担心我不能发布任何截图,但是场景变得非常明亮,例如橘子变成亮黄色。特别是高光值似乎非常高,但它们似乎在Max ......中运行良好。

Collada材料:

<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>

0 个答案:

没有答案