- 浏览: 81374 次
- 性别:
- 来自: 珠海
文章分类
最新评论
-
kennyluo:
网页上发布的代码上缺少了"//",注意&q ...
apply a Texture Image to a Cube -
kyng:
图片放到目录下。。。修改对应名称 。。怎么还出错!!!
Ex ...
apply a Texture Image to a Cube
import java.applet.Applet; import java.awt.BorderLayout; import javax.media.j3d.AmbientLight; import javax.media.j3d.Appearance; import javax.media.j3d.Background; import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.DirectionalLight; import javax.media.j3d.GeometryArray; import javax.media.j3d.Material; import javax.media.j3d.PointLight; import javax.media.j3d.PolygonAttributes; import javax.media.j3d.QuadArray; import javax.media.j3d.Shape3D; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.media.j3d.TriangleStripArray; import javax.vecmath.Color3f; import javax.vecmath.Point3f; import javax.vecmath.Vector3f; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.Box; import com.sun.j3d.utils.universe.SimpleUniverse; /** * LightScopeApp creates a scene that is paritally light by a light using the * scoping feature. */ public class LightScopeApp extends Applet { Appearance createMaterialAppearance(Color3f color) { Appearance appear = new Appearance(); Material material = new Material(); material.setDiffuseColor(color); material.setShininess(50.0f); appear.setMaterial(material); return appear; } Shape3D createXZPlane(Point3f p0, Point3f p1, Point3f p2, Point3f p3) { Shape3D plane = new Shape3D(); QuadArray planeGeom = new QuadArray(4, QuadArray.COORDINATES | QuadArray.NORMALS); planeGeom.setCoordinate(0, p0); planeGeom.setCoordinate(1, p1); planeGeom.setCoordinate(2, p2); planeGeom.setCoordinate(3, p3); Vector3f norm = new Vector3f(0.0f, 1.0f, 0.0f); planeGeom.setNormal(0, norm); planeGeom.setNormal(1, norm); planeGeom.setNormal(2, norm); planeGeom.setNormal(3, norm); plane.setGeometry(planeGeom); return plane; } Shape3D createLampShape() { Shape3D lamp = new Shape3D(); int stripCounts[] = { 10, 10 }; TriangleStripArray lampGeom = new TriangleStripArray(20, GeometryArray.COORDINATES | GeometryArray.NORMALS, stripCounts); lampGeom.setCoordinate(0, new Point3f(-0.01f, 0.9f, 0.01f)); lampGeom.setCoordinate(1, new Point3f(-0.01f, 0.0f, 0.01f)); lampGeom.setCoordinate(2, new Point3f(0.01f, 0.9f, 0.01f)); lampGeom.setCoordinate(3, new Point3f(0.01f, 0.0f, 0.01f)); lampGeom.setCoordinate(4, new Point3f(0.01f, 0.9f, -0.01f)); lampGeom.setCoordinate(5, new Point3f(0.01f, 0.0f, -0.01f)); lampGeom.setCoordinate(6, new Point3f(-0.01f, 0.9f, -0.01f)); lampGeom.setCoordinate(7, new Point3f(-0.01f, 0.0f, -0.01f)); lampGeom.setCoordinate(8, new Point3f(-0.01f, 0.9f, 0.01f)); lampGeom.setCoordinate(9, new Point3f(-0.01f, 0.0f, 0.01f)); lampGeom.setCoordinate(10, new Point3f(-0.1f, 0.9f, 0.1f)); lampGeom.setCoordinate(11, new Point3f(-0.2f, 0.5f, 0.2f)); lampGeom.setCoordinate(12, new Point3f(0.1f, 0.9f, 0.1f)); lampGeom.setCoordinate(13, new Point3f(0.2f, 0.5f, 0.2f)); lampGeom.setCoordinate(14, new Point3f(0.1f, 0.9f, -0.1f)); lampGeom.setCoordinate(15, new Point3f(0.2f, 0.5f, -0.2f)); lampGeom.setCoordinate(16, new Point3f(-0.1f, 0.9f, -0.1f)); lampGeom.setCoordinate(17, new Point3f(-0.2f, 0.5f, -0.2f)); lampGeom.setCoordinate(18, new Point3f(-0.1f, 0.9f, 0.1f)); lampGeom.setCoordinate(19, new Point3f(-0.2f, 0.5f, 0.2f)); Vector3f norm = new Vector3f(-0.7f, 0.0f, 0.7f); lampGeom.setNormal(0, norm); lampGeom.setNormal(1, norm); norm.set(0.7f, 0.0f, 0.7f); lampGeom.setNormal(2, norm); lampGeom.setNormal(3, norm); norm.set(0.7f, 0.0f, -0.7f); lampGeom.setNormal(4, norm); lampGeom.setNormal(5, norm); norm.set(-0.7f, 0.0f, -0.7f); lampGeom.setNormal(6, norm); lampGeom.setNormal(7, norm); norm.set(-0.7f, 0.0f, 0.7f); lampGeom.setNormal(8, norm); lampGeom.setNormal(9, norm); norm.set(-0.7f, 0.0f, 0.7f); lampGeom.setNormal(10, norm); lampGeom.setNormal(11, norm); norm.set(0.7f, 0.0f, 0.7f); lampGeom.setNormal(12, norm); lampGeom.setNormal(13, norm); norm.set(0.7f, 0.0f, -0.7f); lampGeom.setNormal(14, norm); lampGeom.setNormal(15, norm); norm.set(-0.7f, 0.0f, -0.7f); lampGeom.setNormal(16, norm); lampGeom.setNormal(17, norm); norm.set(-0.7f, 0.0f, 0.7f); lampGeom.setNormal(18, norm); lampGeom.setNormal(19, norm); lamp.setGeometry(lampGeom); return lamp; } BranchGroup createScene() { BranchGroup scene = new BranchGroup(); TransformGroup tableTG = new TransformGroup(); TransformGroup lampTG = new TransformGroup(); TransformGroup litBoxTG = new TransformGroup(); TransformGroup unLitBoxTG = new TransformGroup(); scene.addChild(tableTG); tableTG.addChild(lampTG); tableTG.addChild(litBoxTG); tableTG.addChild(unLitBoxTG); Color3f white = new Color3f(1.0f, 1.0f, 1.0f); Color3f red = new Color3f(1.0f, 0.0f, 0.0f); Color3f blue = new Color3f(0.0f, 1.0f, 0.0f); Color3f green = new Color3f(0.0f, 0.0f, 1.0f); Color3f black = new Color3f(0.0f, 0.0f, 0.0f); Vector3f transVector = new Vector3f(); Transform3D transTransform = new Transform3D(); transVector.set(0.0f, -0.4f, 0.5f); transTransform.setTranslation(transVector); tableTG.setTransform(transTransform); transVector.set(-0.4f, 0.001f, 0.1f); transTransform.setTranslation(transVector); lampTG.setTransform(transTransform); transVector.set(-0.2f, 0.1f, 0.2f); transTransform.setTranslation(transVector); litBoxTG.setTransform(transTransform); transVector.set(0.3f, 0.1f, -0.4f); transTransform.setTranslation(transVector); unLitBoxTG.setTransform(transTransform); Shape3D tablePlane = createXZPlane(new Point3f(-1.0f, 0.0f, -1.0f), new Point3f(-1.0f, 0.0f, 1.0f), new Point3f(1.0f, 0.0f, 1.0f), new Point3f(1.0f, 0.0f, -1.0f)); tablePlane.setAppearance(createMaterialAppearance(white)); tableTG.addChild(tablePlane); litBoxTG.addChild(new Box(0.1f, 0.1f, 0.1f, Box.GENERATE_NORMALS, createMaterialAppearance(red))); Shape3D shadowPlane = createXZPlane(new Point3f(0.1f, -0.095f, -0.1f), new Point3f(0.1f, -0.095f, 0.1f), new Point3f(0.2f, -0.095f, 0.15f), new Point3f(0.2f, -0.095f, -0.15f)); shadowPlane.setAppearance(createMaterialAppearance(black)); litBoxTG.addChild(shadowPlane); Appearance redGlowMat = createMaterialAppearance(red); // redGlowMat.getMaterial().setEmissiveColor(0.5f, 0.5f, 0.5f); unLitBoxTG.addChild(new Box(0.1f, 0.1f, 0.1f, Box.GENERATE_NORMALS, redGlowMat)); Shape3D lamp = createLampShape(); Appearance lampAppearance = createMaterialAppearance(blue); PolygonAttributes polyAttrib = new PolygonAttributes(); polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); polyAttrib.setBackFaceNormalFlip(true); lampAppearance.setPolygonAttributes(polyAttrib); lamp.setAppearance(lampAppearance); lampTG.addChild(lamp); PointLight lampLight = new PointLight(); lampLight.setPosition(0.1f, 0.5f, -0.1f); lampLight.setInfluencingBounds(new BoundingSphere()); lampTG.addChild(lampLight); Shape3D litPlane = createXZPlane(new Point3f(-0.4f, 0.0f, -0.4f), new Point3f(-0.4f, 0.0f, 0.4f), new Point3f(0.4f, 0.0f, 0.4f), new Point3f(0.4f, 0.0f, -0.4f)); litPlane.setAppearance(createMaterialAppearance(white)); lampTG.addChild(litPlane); lampLight.addScope(lampTG); lampLight.addScope(litBoxTG); AmbientLight lightA = new AmbientLight(); lightA.setInfluencingBounds(new BoundingSphere()); scene.addChild(lightA); DirectionalLight lightD1 = new DirectionalLight(); lightD1.setInfluencingBounds(new BoundingSphere()); lightD1.setColor(new Color3f(0.4f, 0.4f, 0.4f)); Vector3f lightDir = new Vector3f(-1.0f, -1.0f, -1.0f); lightDir.normalize(); lightD1.setDirection(lightDir); scene.addChild(lightD1); DirectionalLight lightD2 = new DirectionalLight(); lightD2.setInfluencingBounds(new BoundingSphere()); lightD2.setColor(new Color3f(0.2f, 0.2f, 0.2f)); lightDir.set(1.0f, -1.0f, -1.0f); lightDir.normalize(); lightD2.setDirection(lightDir); scene.addChild(lightD2); Background bg = new Background(); bg.setColor(1.0f, 1.0f, 1.0f); bg.setApplicationBounds(new BoundingSphere()); scene.addChild(bg); return scene; } public LightScopeApp() { setLayout(new BorderLayout()); Canvas3D c = new Canvas3D(null); add("Center", c); BranchGroup scene = createScene(); scene.compile(); SimpleUniverse u = new SimpleUniverse(c); // This will move the ViewPlatform back a bit so the // objects in the scene can be viewed. u.getViewingPlatform().setNominalViewingTransform(); u.addBranchGraph(scene); } public static void main(String argv[]) { new MainFrame(new LightScopeApp(), 256, 256); } }
发表评论
-
apply a Texture Image to a Cube
2010-07-28 01:45 1629import java.applet.Applet; imp ... -
Demonstration of the use of scoping for controlling the influence of lights
2010-07-28 01:41 831import java.applet.Applet; imp ... -
Create a Swing based 3D book
2010-07-28 01:36 976import java.awt.BorderLayout; ... -
Dynamic texture coordinate generation using the TexCoordGeneration class
2010-07-28 01:30 1297This example illustrates dynami ... -
illustrate use of light influencing bounds, and bounding leaves
2010-07-28 01:25 923// //CLASS //ExLightBounds - ... -
ExAmbientLight - illustrate use of ambient lights
2010-07-28 01:19 1009// //CLASS //ExAmbientLight - ... -
ExDirectionalLight - illustrate use of directional lights
2010-07-28 01:12 958// //CLASS //ExDirectionalLig ... -
Java3D的场景图结构
2010-07-28 01:07 1969Java3D的场景图结构 Java3D实际上是Java ... -
Java 3d 1.5.2 API Document
2010-03-09 16:17 1014Java 3d 1.5.2 API Document Jav ... -
基于直接光照的全局光照模拟
2010-02-21 11:34 16461、概述 近年来,随着计算机图形图像技术在游戏、影视动西 ...
相关推荐
WS_DISABLED Creates a window that is initially disabled. WS_DLGFRAME Creates a window with a double border but no title. WS_GROUP Specifies the first control of a group of controls in which the user...
gif2apng is a simple program that converts animations from GIF to APNG format. It disproves the common misconception that Animated PNG files are always too big, as it actually creates APNG files ...
可建设的//Creates a scene node at the origin with no rotationvar origin = obscene.origin();//Creates a scene node translated forward 1 unitvar forward = obscene.translate([1, 0, 0]);//Creates a scene ...
The map data type presented in this book creates new mechanisms for the storage, analysis, and computation of map data objects in any field that represents data in a map form. The authors develop a ...
This program takes customers orders by code then creates a bill for the purchases. Also can print the bill. All totals are calculated automatically客户购物和打印程序
Nature Shaders is a collection of shaders for your vegetation that brings you player interaction, wind simulations, better quality shading, and more. You can easily convert and import models from any...
标题 "A cross-platform command-line utility that creates project.zip" 指的是一款可在多个操作系统上运行的命令行工具,它的主要功能是创建名为 "project.zip" 的项目压缩文件。这款工具对于开发者来说尤其有用...
The remoting system creates a proxy object that represents the class and returns to the client object a reference to the proxy. When the client calls a method, the remoting infrastructure handles the...
from the object itself and then mirror or twin that object is a concept referred to as the Digital Twin. The Digital Twin is receiving a great deal of interest from manufacturers who make advanced ...
If you clone the whole project, main app is a sample app that you can run and see simplegraph functionality in action. Why this library is out there? Well, I've spent too much time looking for library...
Here we introduce an artificial system based on a Deep Neural Network that creates artistic images of high perceptual quality. The system uses neural representations to sepa- rate and recombine ...
Now write a program that creates a single instance of a structure of type Struct2. Read its member variables from the console one at a time. Create a second instance of Struct2 and copy al the ...
users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise...
The code that creates Javacore is part of the JVM. You can control it by using environment variables and runtime switches. Javacore contains diagnostic information related to the JVM and a Java ...
users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise...
XNA is a set of tools developed by Microsoft that enables developers to create games for Windows and Xbox platforms. WPF (Windows Presentation Foundation) is a UI framework for building Windows ...
A fancier way of using this class is to dynamically allocate an object of CRedirect and provide a Stop button that allows you to terminate the child process, as shown in the following (an abbreviated ...
It is a process whereby objects define their dependencies, that is, the other objects they work with, only through constructor arguments, arguments to a factory method, or properties that are set on ...
The Star Rating Plugin is a plugin for the jQuery Javascript library that creates a non-obstrusive star rating control based on a set of radio input boxes. <br>What does it do? It turns a ...