canvas教程

Java游戏编程杀手:3D跳棋游戏(3)

字号+ 作者:H5之家 来源:H5之家 2017-08-23 16:00 我要评论( )

Material mat = new Material(ambientColor, emissiveColor, diffuseColor, specularColor, shininess); 环境颜色参数指定当形体被环境灯光照射后的颜色:他给对象统一的颜色。放射性颜色贡献形体生成的颜色。这个

  Material mat = new Material(ambientColor, emissiveColor,
                                diffuseColor, specularColor, shininess);

  环境颜色参数指定当形体被环境灯光照射后的颜色:他给对象统一的颜色。放射性颜色贡献形体生成的颜色。这个参数经常被设置成黑色(相当于关闭)。当照射的时候,发散颜色就是对象的颜色,他的强度取决于光波照射到形体的角度。

  提示:发散灯光和环境灯光通常被设置成相同,这与真实世界中的对象被照射时候的颜色一样。

  镜子颜色参数的强度与从形体的光亮区域反射出的多少有关。他由控制reflective highlight尺寸的发光参数组合成。

  提示:镜子颜色通常设置成白色,符合真实世界中大部分对象产生的颜色。

  Checkers3D类中,有两个不同方向的光,他们在球体顶部建立了两个不同的光路(如图15-1)。地板在他们的颜色未在形体的几何特性中设置前,是没有被照射到的。

  floatingSphere( ) 中处理形体现实的代码如下:

  Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
    Color3f blue = new Color3f(0.3f, 0.3f, 0.8f);
    Color3f specular = new Color3f(0.9f, 0.9f, 0.9f); // near white

    Material blueMat= new Material(blue, black, blue, specular, 25.0f);
    blueMat.setLightingEnable(true);

    Appearance blueApp = new Appearance( );
    blueApp.setMaterial(blueMat);

  布置形体

  形体放置一般是在TransformGroup 下放置图形节点。(参见图15-3 sphere Group)。一个 TransformGroup 用来放置、旋转和度量旗下节点。他由Java 3D Transform3D 对象定义其格式。

  Transform3D t3d = new Transform3D( );
    t3d.set( new Vector3f(0,4,0));     // place at (0,4,0)
    TransformGroup tg = new TransformGroup(t3d);
    tg.addChild(new Sphere(2.0f, blueApp));
           // set the sphere's radius and appearance
           // and its normals by default
    sceneBG.addChild(tg);


  set( ) 方法将形体的中心放置在(0.4.0),重置先前的旋转和度量。在重置其他格式的时候,set( ) 能用来改变度量和角度。方法setTranslation( ), setScale( )和setRotation( ) 只能对已给格式起作用。

  与其他3D画图程序包不同的是,Java 3D中的Y轴是垂直方向,而水平面由xoz决定,如图15-4。球体的位置被设置为(0,4,0),在XOZ面中心上方4个单位。

  

  图15-4,Java 3D中的坐标系

  完,请等待Part 2...

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • webgl下经常崩溃,canvas下mesh又用不了

    webgl下经常崩溃,canvas下mesh又用不了

    2017-08-23 13:03

  • bboyjoe的博客

    bboyjoe的博客

    2017-08-21 13:00

  • [游戏软件开发基础]学习游戏软件开发需要哪些基础

    [游戏软件开发基础]学习游戏软件开发需要哪些基础

    2017-08-18 16:00

  • Python实现的弹球小游戏示例

    Python实现的弹球小游戏示例

    2017-08-17 15:02

网友点评