java透明度_简单的透明度示例不适用于Java 3D
我是j3d中的完整n00b(但是
Java专家).刚刚开始,我遇到了一个透明度问题.我有一个简单的例子,绘制一个旋转的平面四边形(显示背面消失,因为我没有禁用背面剔除).
将Color3b和COLOR_3线取消注释(以及相应的Color4b和COLOR_4线注释),我看到旋转的四边形,红色.
但是,当我评论color-3线并取消注释color-4线时,我看到一个黑色正方形(相对于白色背景),即使alpha值设置为255(完全不透明).
我究竟做错了什么?谷歌没有帮助,甚至java.forums.net上的Java3D论坛都没有帮助. StackOverflow,救救我!您可以复制并通过以下程序,运行它,看看会发生什么.
这是我的规格:
OSX 10.5.5上的Java 6
J3D 1.5.2
JOGL 1.1.1
谢谢,
– 抢
这是代码:
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.applet.Applet;
import java.awt.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Hello extends Applet
{
public Hello() throws Exception
{
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
BranchGroup scene = createSceneGraph();
scene.compile();
SimpleUniverse univ = new SimpleUniverse(canvas3D);
univ.getViewingPlatform().setNominalViewingTransform();
univ.addBranchGraph(scene);
}
public BranchGroup createSceneGraph() throws Exception
{
BranchGroup root = new BranchGroup();
// A white background.
Background bgd = new Background(1.0f, 1.0f, 1.0f);
root.addChild(bgd);
// This will spin the quad around
TransformGroup spin = new TransformGroup();
spin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
root.addChild(spin);
// define the quad:
Point3d p1 = new Point3d(-0.5, -0.5, 0);
Point3d p2 = new Point3d(0.5, -0.5, 0);
Point3d p3 = new Point3d(0.5, 0.5, 0);
Point3d p4 = new Point3d(-0.5, 0.5, 0);
// colors
Color4b c = new Color4b((byte)255, (byte)0, (byte)0, (byte)255);
//Color3b c = new Color3b((byte)255, (byte)0, (byte)0);
QuadArray quads = new QuadArray(4,
GeometryArray.COORDINATES | GeometryArray.COLOR_4);
// GeometryArray.COORDINATES | GeometryArray.COLOR_3);
quads.setCoordinate(0, p1);
quads.setCoordinate(1, p2);
quads.setCoordinate(2, p3);
quads.setCoordinate(3, p4);
quads.setColor(0, c);
quads.setColor(1, c);
quads.setColor(2, c);
quads.setColor(3, c);
// Not sure if I need this. Doesn't seem to make a difference.
Appearance appearance = new Appearance();
TransparencyAttributes trans = new TransparencyAttributes();
trans.setTransparencyMode(TransparencyAttributes.BLENDED);
appearance.setTransparencyAttributes(trans);
// Create the shape...
Shape3D shape = new Shape3D();
shape.setGeometry(quads);
shape.setAppearance(appearance);
spin.addChild(shape);
Alpha rotationAlpha = new Alpha(-1, 4000);
RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, spin);
BoundingSphere bounds = new BoundingSphere();
rotator.setSchedulingBounds(bounds);
spin.addChild(rotator);
return root;
}
public static void main(String[] args) throws Exception
{
Frame frame = new MainFrame(new Hello(), 256, 256);
}
}
java透明度_简单的透明度示例不适用于Java 3D相关推荐
- eclipse怎么编写java程序_简单使用Eclipse编写第一个Java程序
文章作者:姜南(Slyar)文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. Eclipse是很常用的Java IDE,至少我们学校教Java都是用这个.下载就不 ...
- 简单java程序_简单的Java程序
简单java程序 Simple java programs are good for assessing the coding skills of a programmer. You will fin ...
- 简单的秒表计时器java报告_简单的Java秒表计时器(线程)
秒表的个个位数的计算: package Seconds; public class Watch_time extends Thread{ int ms,ms_1,ms_2; int s,s_1; in ...
- java 分析java死锁_有益的CountDownLatch和棘手的Java死锁
java 分析java死锁 您是否曾经使用过java.util.concurrent.CountDownLatch ? 这是在两个或多个线程之间实现同步的非常方便的类,在该类中,一个或多个线程可以等待 ...
- 和java通信_[源码和文档分享]基于JAVA的即时通信软件
一.设计任务书 1.1 设计任务 本文设计的是一个简单的即时通信软件,利用 Java Socket 进行点到点通信,其工作机制模仿即时通信软件的基本功能,已实现的功能有:客户端登录 客户端退出 群组成 ...
- aix系统java堆_浅谈AIX环境下的Java性能调优
1.什么是Java Java 是一种面向对象的编程语言.它以 C++ 为模型,被设计成小的.简单的.在源和二进制级别跨平台的可移植的语言,Java 程序(applets 和应用程序)可以运行于任何已经 ...
- 安装java环境_(一)环境安装之Java
安装java 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. 小知识: Java环境分JDK和JRE ,JDK就是Java Development Kit.简单的说JDK是面向开发人员使 ...
- JAVA中医舌诊接口使用示例代码,JAVA舌象图特征人工智能识别代码,JAVA实现舌象特征检测与识别
中医舌诊接口使用示例-Java示例项目 中医舌诊健康状态检测API 1.此文档适用于集成中国中医舌诊开放平台功能的用户. 2.此文档说明了与中国中医舌诊开放平台的数据交互方法(restful接口),按 ...
- cmd编译java命令_使用CMD命令编译和运行Java程序
对于初学者来说,使用CMD命令(Unix以及类Unix系统采用Termial)来编译和运行Java的好处是让初学者直观地体会到编译(Compile)这一步骤,加深记忆.所谓编译就是将文本文件xxx.j ...
最新文章
- java sip 携带sdp_SIP中的SDP offer/answer交换初探
- 【虚拟化实战】VM设计之一vCPU
- Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0
- 广告基本知识-广告的目的和效果
- Java读书笔记(4)-多线程(二)
- 九阴真经战无不胜服务器位置,九阴真经各门派武功风水宝地分类及坐标大全
- 工作流实战_20_flowable 任务签收 反签收
- char*转wstring
- C语言第一个字节地址,C语言字节对齐详解
- UIActionSheet的最后一项点击失效
- 如何在IEDA中连github
- mysql 游戏背包_用sql实现背包问题
- 利用openssl进行base64的编码与解码
- 利用c语言在屏幕上打印出窗口,南开19春学期(1709、1803、1809、1903)《计算机应用基捶在线作业...
- Android筑基——深入理解 LayoutInflater.inflate() 方法
- 高中英语老师教师资格证考试成功通过前辈备考经验谈
- 分页查询PageHelper.startPage()无法实现分页
- 正则表达式之基本原理
- helm模板开发-流程控制、作用域、循环、变量(三)
- 高光谱图像算法实习工程师面经
热门文章
- js中类似`${xx,xxxy}`的语句
- 冠状病毒的治疗方案汇总
- (转)阈值?阀值??
- 如何判断两个IP地址是不是同一个网段(超实用)
- 元学习—模型不可知元学习(MAML)
- 在R、Python和Julia中常用的数据可视化技术
- 【移动开发小技巧】苹果修改手机位置最简单的几种方法整理
- Python学习笔记--day09 函数 模块 (文件、路径操作)
- 午夜之后的暗杀者 维基解密又公布CIA的两个Windows恶意软件框架 主要用于监控及执行命令...
- 成功申请美国研究生的10大潜规则