`
niceo
  • 浏览: 109748 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Canvas3D

    博客分类:
  • JAVA
阅读更多
最近在做一些有关于java3D方面的东东。
突然有个想法把Java3D 的场景保存成图片来。可是在保存的过程中出现了点问题。

javax.media.j3d.IllegalRenderingStateException: GL_VERSION
	at javax.media.j3d.NativePipeline.createNewContext(Native Method)
	at javax.media.j3d.NativePipeline.createNewContext(NativePipeline.java:2736)
	at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:4895)
	at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2421)
	at javax.media.j3d.Renderer.doWork(Renderer.java:895)
	at javax.media.j3d.J3dThread.run(J3dThread.java:256)
Rendered to offscreen

DefaultRenderingErrorListener.errorOccurred:
CONTEXT_CREATION_ERROR: Renderer: Error creating Canvas3D graphics context
graphicsDevice = Win32GraphicsDevice[screen=0]
canvas = javax.media.j3d.Canvas3D[canvas0,0,0,400x400,invalid]
Saved image.
Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)


程序代码的:
 protected void onSaveImage() {
	 System.out.println("application stop this !!!");
   offScreenCanvas3D.renderOffScreenBuffer();
   offScreenCanvas3D.waitForOffScreenRendering();
   System.out.println("Rendered to offscreen");

   try {
     FileOutputStream fileOut = new FileOutputStream("C:\\image.jpg");

     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOut);
     encoder.encode(imageComponent.getImage());

     fileOut.flush();
     fileOut.close();
   } catch (Exception e) {
     System.err.println("Failed to save image: " + e);
   }


这是程序代码的片段:

分享到:
评论
6 楼 tl_nicole 2011-05-04  
小弟最近正在学习JAVA3D,求楼主源码学习~~不甚感激
5 楼 niceo 2009-06-01  
gridrender 写道

楼主能不能给出完成的源代码,供大家参考我现在正在做这样一个功能,想和你交流一下我的QQ:327524866请加我


gridrender 看到你的消息我很欣慰,主要是最近在出差刚刚回来。^_^ 交流当然是很好的啊!感谢你的支持
4 楼 gridrender 2009-05-25  
楼主能不能给出完成的源代码,供大家参考
我现在正在做这样一个功能,想和你交流一下
我的QQ:327524866
请加我
3 楼 niceo 2008-12-02  
-----------------------------------------------------------------------------------
afteryuan 写道

我在网上看到的都是通过OffScreenCanvas3D 这个对象去抓屏,我想知道有没有办法从内存里面直接把图片输出来.因为我想做的是从客户端上传一个模型贴图到服务器 ,然后服务器上的java3D程序导入这个贴图,贴到模型上,然后生成图片.

------------------------------------------------------------------------------------

楼上的这种方法我没有去尝试的实现他。
但是我感觉这样好像有点很是麻烦、、、、、、
O(∩_∩)O哈哈~
2 楼 afteryuan 2008-12-01  
我在网上看到的都是通过OffScreenCanvas3D 这个对象去抓屏,我想知道有没有办法从内存里面直接把图片输出来.因为我想做的是从客户端上传一个模型贴图到服务器 ,然后服务器上的java3D程序导入这个贴图,贴到模型上,然后生成图片.
1 楼 niceo 2008-08-13  
我所使用的Java 3d 是Java3D_1.5.1
不过我已经采取了另一种方法来解决这个问题。
java.awt.robot
我采用他来抓取屏幕
他可以将动态的旋转的java3D 场景直接抓取。
class PaintCanvas extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private ScreenCapture screen = null;

	private BufferedImage scrImg = null;

	public PaintCanvas(ScreenCapture screen) {
		this.screen = screen;
	}

	protected void paintComponent(Graphics g) {
		// TODO Auto-generated method stub
		// BufferedImage scrImg = screen.captureScreen();
		if (scrImg != null) {
			int iWidth = this.getWidth();
			int iHeight = this.getHeight();
			g.drawImage(scrImg, 0, 0, iWidth, iHeight, 0, 0, scrImg.getWidth(),
					scrImg.getHeight(), null);
		}

	}

	public void drawScreen() {
		Graphics g = this.getGraphics();
		scrImg = screen.captureScreen();
		if (scrImg != null) {
			this.paintComponent(g);

		}
		g.dispose();
	}

}

相关推荐

    canvas3d_qml3d效果_qt3d效果_canvas3d_qt3d_qtgui_

    在本主题中,我们将深入探讨如何在Qt框架中利用Canvas3D和QML3D以及Qt3D来创建丰富的3D图形效果。Qt是一个强大的跨平台应用开发框架,支持多种编程语言,包括C++和QML。Canvas3D是Qt中的一个模块,它允许开发者在...

    QT Canvas 3D 介绍

    在QT Canvas 3D中集成three.js意味着开发者可以利用three.js提供的丰富API来操作3D图形,比如场景的创建、物体的添加、光源的设置、相机控制和动画等,使QT的3D开发工作变得更加简单和高效。 QT Canvas 3D的未来...

    基于three.js的炫酷Canvas 3D线条动画特效.zip

    【标题】基于Three.js的炫酷Canvas 3D线条动画特效 在当今互联网技术日新月异的时代,WebGL和JavaScript库如Three.js为开发者提供了创建互动式3D图形的强大工具。Three.js是一个广泛使用的开源JavaScript库,它使得...

    HTML5 Canvas 3D跳动Loading加载动画-可调节参数

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行2D和3D图形绘制,提供了丰富的API来创建交互式和动态的视觉效果。在这个特定的案例中,"HTML5 Canvas 3D跳动Loading加载动画-可调节参数"是一个...

    HTML5 Canvas 3D弹性波浪声波动画特效

    此外,WebGL是一种基于OpenGL标准的JavaScript API,它允许开发者在Canvas上进行硬件加速的3D图形渲染,但在这个案例中,我们并未直接使用WebGL,而是通过2D渲染上下文实现了3D效果。 弹性波浪的实现涉及到数学公式...

    canvas 3d动画应用

    "canvas 3d动画应用"的标题表明我们将探讨如何利用Canvas进行3D动画的实现。在这个主题中,我们将深入理解Canvas API,3D变换原理,以及如何创建动态的、交互式的3D场景。 首先,Canvas API提供了JavaScript接口,...

    HTML5 canvas 3D文字云动画

    在这个案例中,canvas被用来创建3D文字云,这意味着我们需要用到canvas的路径绘制和变换方法,如`beginPath()`、`moveTo()`、`lineTo()`、`rotate()`等,以及文本相关的`fillText()`和`strokeText()`。 3D效果的...

    逼真的Canvas 3D地球旋转动画特效

    Canvas API本身并不直接支持3D图形,但我们可以利用WebGL(Web Graphics Library)来实现。WebGL是一种基于OpenGL标准的JavaScript API,它允许在浏览器中进行硬件加速的3D图形渲染。 1. **WebGL上下文**:首先,...

    html5 canvas 3D海洋粒子波浪动画特效

    HTML5 Canvas是HTML5标准中的一个关键特性,它允许开发者在网页上进行动态图形绘制,提供了丰富的2D和3D图形处理能力。本项目“html5 canvas 3D海洋粒子波浪动画特效”正是利用这一特性,通过JavaScript编程实现了一...

    Canvas 3D卡片旋转特效.rar

    【Canvas 3D卡片旋转特效】是一个网页特效资源,它利用了HTML5的Canvas元素以及相关的JavaScript技术,为网页提供了一种引人注目的视觉效果。这个特效代码旨在实现3D旋转的卡片展示,通常用于增强用户体验,比如产品...

    android canvas 3D旋转木马 图片立体展示

    然而,通过巧妙地运用Canvas和一些数学原理,我们也可以实现3D效果,比如3D旋转木马式的图片展示。这种效果通常用于创建引人入胜的用户界面,使应用更加生动有趣。 3D旋转木马效果涉及到的主要技术点包括: 1. **...

    HTML5 Canvas 3D螺旋状圆点线条动画特效

    首先,3D效果通常涉及到矩阵变换,例如旋转、缩放和平移,这些在Canvas中可以通过`context.transform()`和`context.setTransform()`等方法实现。在这个特效中,开发者可能使用了多个连续的旋转和平移操作来模拟螺旋...

    html5 canvas 3D方块环形动画特效

    首先,要创建3D效果,我们需要理解Canvas中的二维绘图命令以及如何通过数学和透视原理来模拟3D空间。这通常涉及到坐标变换、投影和视口设置。在JavaScript中,我们可以使用矩阵运算来处理这些变换,以达到预期的3D...

    html5 canvas 3D汽车模型排放尾气动画特效

    例如,它可能会设置canvas的尺寸,使其适应页面,或者调整其他元素的样式以配合3D场景的视觉效果。 最后,index.html文件是整个网页的入口点,它会引用Three.js库和其他JavaScript及CSS资源,同时包含一个canvas...

    原生js html5 canvas 3D云动画效果

    在本项目中,"原生js html5 canvas 3D云动画效果" 是一个利用JavaScript、HTML5的Canvas API和3D技术实现的创新性视觉效果。Canvas是HTML5的一个重要组成部分,它允许开发者在网页上进行动态图形绘制,而无需借助...

    HTML5 canvas 3D烟花爆炸动画.zip

    WebGL是一种基于OpenGL标准的JavaScript API,它为Canvas提供了硬件加速的3D图形渲染能力。在这个案例中,开发者可能并没有直接使用WebGL,而是通过Canvas 2D上下文进行复杂的数学计算和图形变换,模拟出3D烟花爆炸...

    HTML5 Canvas 3D 倒计时爆炸特效

    HTML5 Canvas 3D 倒计时爆炸特效

    Canvas 3D Javascript来在浏览器中直接显示3D场景的库

    Canvas 3D 是一种利用JavaScript技术在Web浏览器中创建和展示3D图形的方法。它主要基于HTML5的Canvas元素,通过JavaScript API实现3D场景的渲染。这种技术为Web开发者提供了一种无需依赖任何插件就能构建交互式3D...

    超炫酷HTML5 Canvas 3D旋转地球动画DEMO演示

    1、html5 2、地球旋转 3、canvas

Global site tag (gtag.js) - Google Analytics