快速业务通道

Java3D中平行光投影的实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ay.COLOR_3); int v; Point3f vertex=new Point3f(); Point3f shadow=new Point3f();  for(v=0;v<vCount;v++){ //计算可见面顶点在投影面上的投影坐标 geom.getCoordinate(v,vertex); System.out.println(vertex.y-height); shadow.set(vertex.x-(vertex.y-height),height+0.0001f, vertex.z-(vertex.y-height)); poly.setCoordinate(v,shadow); poly.setColor(v,col); } this.setGeometry(poly); } } public SimpleShadow(){ this.setLayout(new BorderLayout()); //GraphicsConfiguration config =SimpleUniverse.getPreferredConfiguration(); Canvas3D c=new Canvas3D(null); this.add("Center",c); //创建分支节点 BranchGroup scene=new BranchGroup(); //创建三角形可见平面 Shape3D plane=new TriPlane(new Point3f(0.0f,0.6f,-0.2f), new Point3f(-0.3f,-0.3f,0.2f), new Point3f(0.6f,-0.3f,0.2f)); //添加到根分支节点 scene.addChild(plane); //创建四边形投影平面 Shape3D floor=new QuadPlane(new Point3f(-1.0f,-0.5f,-1.0f), new Point3f(-1.0f,-0.5f,1.0f),new Point3f(1.0f,-0.5f,1.0f), new Point3f(1.0f,-0.5f,-1.0f)); //添加到根分支节点 scene.addChild(floor); //添加到环境光 AmbientLight lightA=new AmbientLight(); lightA.setInfluencingBounds(new BoundingSphere()); scene.addChild(lightA); //添加平行光 DirectionalLight lightD1=new DirectionalLight(); lightD1.setInfluencingBounds(new BoundingSphere()); Vector3f direction=new Vector3f(-1.0f,-1.0f,-1.0f); //方向矢量单位化 direction.normalize(); lightD1.setDirection(direction); scene.addChild(lightD1); //创建阴影物体 Shape3D shadow=new Shadow3D((GeometryArray)plane.getGeometry(),direction, new Color3f(0.2f,0.2f,0.2f),-0.5f); scene.addChild(shadow); SimpleUniverse u=new SimpleUniverse(c); u.getViewingPlatform().setNominalViewingTransform(); u.addBranchGraph(scene); } public static void main(String argv[]){ new MainFrame(new SimpleShadow(),256,256); } }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号