科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Java移动设备D图形:M3G快速模式(组图)

Java移动设备D图形:M3G快速模式(组图)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  本文是此系列两部分中的第 1 部分,介绍了 Mobile 3D Graphics API (JSR 184) 的有关内容。作者将带领您进入 Java 移动设备的 3D 编程世界,并展示了处理光线、摄像机和材质的方法。

作者:builder.com.cn 2007年8月24日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
  在图 8 中,您可以看到各种光线模式的不同效果。分别以 4 种类型的光照射示例立方体。这里的光线均为白色,就在摄像机前面,朝向立方体的三个面。
  
  
图 8. 使用不同的光线照射立方体 a) 全向光;b) 聚光;c) 环境光;d) 定向光
   

  全向光在面对光源的顶点处最亮,然后逐渐暗淡下来。另外,聚光在聚光圆锥的边缘处制造了强烈的明暗对比。如果定义了一个足够大的光锥,那么所得到的结果可能与全向光相同。环境光从各个方向照亮立方体,立方体看上去是平的,这是因为缺乏阴影。最后,定向光使每面都具有不同的颜色。每面内的颜色都相同,这是因为光线是平行的。
  
  照明并不精确,否则,聚光照亮的圆锥体范围应该是圆形。这是因为光线计算比较复杂,手机的部件将简化这一计算。可以为立方体的各边添加更多的三角形,从而提高其显示质量。尽管三角形并不能定义一个可见的几何图形,但可使 M3G 拥有更多的控制点(要计算的数量也更多)。
  
  材质
  
  通过光线可实现不同的效果。一个闪闪发光的银色球反射光线的方式与一张纸显然不同。M3G 使用以下属性为这些材质的特征建立模型:
  
  环境反射:由环境光源反射的光线。
  漫反射:反射光均匀地分散到各个方向。
  放射光:一个像炽热的物体那样发射光线的对象。
  镜面反射:光线从有光亮平面的对象反射回来。
  您可为各材质属性设置颜色。闪闪发光的银色球的漫反射光线应该是银色的,其镜面反射部分为白色。材质的颜色与光线的颜色相融合,从而得到最终的对象颜色。如果您用蓝光照射银色球,那么球看上去应该略带蓝色。
  
  清单 9 展示了使用材质的方式:
  
  清单 9. 设置材质
  
  // Create appearance and the material.
  _cubeAppearance = new Appearance();
  _colorTarget = COLOR_DEFAULT;
  setMaterial(_cubeAppearance, _colorTarget);
  
  /**
  * Sets the material according to the given target.
  *
  * @param appearance appearance to be modified.
  * @param colorTarget target color.
  */
  protected void setMaterial(Appearance appearance, int colorTarget)
  {
  Material material = new Material();
  
  switch (colorTarget)
  {
  case COLOR_DEFAULT:
  break;
  
  case COLOR_AMBIENT:
  material.setColor(Material.AMBIENT, 0x00FF0000);
  break;
  
  case COLOR_DIFFUSE:
  material.setColor(Material.DIFFUSE, 0x00FF0000);
  break;
  
  case COLOR_EMISSIVE:
  material.setColor(Material.EMISSIVE, 0x00FF0000);
  break;
  
  case COLOR_SPECULAR:
  
  material.setColor(Material.SPECULAR, 0x00FF0000);
  material.setShininess(2);
  break;
  
  // no default
  }
  
  appearance.setMaterial(material);
  }
  
  setMaterial() 创建了一个新的 Material 对象,通过使用各颜色组件标识符的 setColor() 设置颜色。Material 对象随后被指派给 Appearance 对象,该对象用于调用 Graphics3D.render()。尽管这里没有展示,但您还可以使用 Material.setVertexColorTrackingEnable() 为环境反射和漫反射使用顶点颜色,不必使用 Material.setColor()。LightingMaterialsSample.java 这一示例中实现了光线和材质。按其中的键可以将不同的颜色与材质综合,感受不同的效果。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章