我是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相关推荐

  1. eclipse怎么编写java程序_简单使用Eclipse编写第一个Java程序

    文章作者:姜南(Slyar)文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. Eclipse是很常用的Java IDE,至少我们学校教Java都是用这个.下载就不 ...

  2. 简单java程序_简单的Java程序

    简单java程序 Simple java programs are good for assessing the coding skills of a programmer. You will fin ...

  3. 简单的秒表计时器java报告_简单的Java秒表计时器(线程)

    秒表的个个位数的计算: package Seconds; public class Watch_time extends Thread{ int ms,ms_1,ms_2; int s,s_1; in ...

  4. java 分析java死锁_有益的CountDownLatch和棘手的Java死锁

    java 分析java死锁 您是否曾经使用过java.util.concurrent.CountDownLatch ? 这是在两个或多个线程之间实现同步的非常方便的类,在该类中,一个或多个线程可以等待 ...

  5. 和java通信_[源码和文档分享]基于JAVA的即时通信软件

    一.设计任务书 1.1 设计任务 本文设计的是一个简单的即时通信软件,利用 Java Socket 进行点到点通信,其工作机制模仿即时通信软件的基本功能,已实现的功能有:客户端登录 客户端退出 群组成 ...

  6. aix系统java堆_浅谈AIX环境下的Java性能调优

    1.什么是Java Java 是一种面向对象的编程语言.它以 C++ 为模型,被设计成小的.简单的.在源和二进制级别跨平台的可移植的语言,Java 程序(applets 和应用程序)可以运行于任何已经 ...

  7. 安装java环境_(一)环境安装之Java

    安装java 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. 小知识: Java环境分JDK和JRE ,JDK就是Java Development Kit.简单的说JDK是面向开发人员使 ...

  8. JAVA中医舌诊接口使用示例代码,JAVA舌象图特征人工智能识别代码,JAVA实现舌象特征检测与识别

    中医舌诊接口使用示例-Java示例项目 中医舌诊健康状态检测API 1.此文档适用于集成中国中医舌诊开放平台功能的用户. 2.此文档说明了与中国中医舌诊开放平台的数据交互方法(restful接口),按 ...

  9. cmd编译java命令_使用CMD命令编译和运行Java程序

    对于初学者来说,使用CMD命令(Unix以及类Unix系统采用Termial)来编译和运行Java的好处是让初学者直观地体会到编译(Compile)这一步骤,加深记忆.所谓编译就是将文本文件xxx.j ...

最新文章

  1. java sip 携带sdp_SIP中的SDP offer/answer交换初探
  2. 【虚拟化实战】VM设计之一vCPU
  3. Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0
  4. 广告基本知识-广告的目的和效果
  5. Java读书笔记(4)-多线程(二)
  6. 九阴真经战无不胜服务器位置,九阴真经各门派武功风水宝地分类及坐标大全
  7. 工作流实战_20_flowable 任务签收 反签收
  8. char*转wstring
  9. C语言第一个字节地址,C语言字节对齐详解
  10. UIActionSheet的最后一项点击失效
  11. 如何在IEDA中连github
  12. mysql 游戏背包_用sql实现背包问题
  13. 利用openssl进行base64的编码与解码
  14. 利用c语言在屏幕上打印出窗口,南开19春学期(1709、1803、1809、1903)《计算机应用基捶在线作业...
  15. Android筑基——深入理解 LayoutInflater.inflate() 方法
  16. 高中英语老师教师资格证考试成功通过前辈备考经验谈
  17. 分页查询PageHelper.startPage()无法实现分页
  18. 正则表达式之基本原理
  19. helm模板开发-流程控制、作用域、循环、变量(三)
  20. 高光谱图像算法实习工程师面经

热门文章

  1. js中类似`${xx,xxxy}`的语句
  2. 冠状病毒的治疗方案汇总
  3. (转)阈值?阀值??
  4. 如何判断两个IP地址是不是同一个网段(超实用)
  5. 元学习—模型不可知元学习(MAML)
  6. 在R、Python和Julia中常用的数据可视化技术
  7. 【移动开发小技巧】苹果修改手机位置最简单的几种方法整理
  8. Python学习笔记--day09 函数 模块 (文件、路径操作)
  9. 午夜之后的暗杀者 维基解密又公布CIA的两个Windows恶意软件框架 主要用于监控及执行命令...
  10. 成功申请美国研究生的10大潜规则