|
|
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Доброе утро всем. Работаю с Java3D. Привожу код: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package java3d; /** * * @author IT3 */ import javax.vecmath.*; import java.awt.*; import java.applet.*; import java.awt.event.*; import java.net.URL; import javax.media.j3d.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.image.*; import com.sun.j3d.utils.applet.MainFrame; public class Java3D extends Applet { public static void main(String[] args) { //--------------------------------------------------------------------------------[Page 24]15 new MainFrame(new Java3D(), 480, 480); String path = System.getProperty("java.library.path"); System.out.println(path); } private SimpleUniverse su; public void init() { GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration(); Canvas3D cv = new Canvas3D(gc); setLayout(new BorderLayout()); add(cv); BranchGroup bg = createSceneGraph(); bg.compile(); su = new SimpleUniverse(cv); su.getViewingPlatform().setNominalViewingTransform(); su.addBranchGraph(bg); } public void destroy() { su.cleanup(); } private BranchGroup createSceneGraph() { BranchGroup root = new BranchGroup(); TransformGroup spin = new TransformGroup(); spin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); root.addChild(spin); // 3d text Appearance ap = new Appearance(); ap.setMaterial(new Material()); Font3D font = new Font3D(new Font("Helvetica", Font.PLAIN, 1), new FontExtrusion()); Text3D text = new Text3D(font, "Java 3D"); Shape3D shape = new Shape3D(text, ap); // transform for text Transform3D tr = new Transform3D(); tr.setScale(0.2); tr.setTranslation(new Vector3d(-0.35,-0.15,0.75)); TransformGroup tg = new TransformGroup(tr); root.addChild(tg); tg.addChild(shape); // globe ap = createAppearance(); spin.addChild(new Sphere(0.7f, Primitive.GENERATE_TEXTURE_COORDS, 50, ap)); // rotation Alpha alpha = new Alpha(-1, 6000); RotationInterpolator rotator = new RotationInterpolator(alpha, spin); BoundingSphere bounds = new BoundingSphere(); rotator.setSchedulingBounds(bounds); spin.addChild(rotator); // background and lights Background background = new Background(1.0f, 1.0f, 1.0f); background.setApplicationBounds(bounds); root.addChild(background); AmbientLight light = new AmbientLight(true, new Color3f(Color.red)); light.setInfluencingBounds(bounds); root.addChild(light); //------------------------------------------------------------------------------[Page 25]75 PointLight ptlight = new PointLight(new Color3f(Color.white), new Point3f(3f,3f,3f), new Point3f(1f,0f,0f)); ptlight.setInfluencingBounds(bounds); root.addChild(ptlight); return root; } private Appearance createAppearance(){ Appearance ap = new Appearance(); URL filename = getClass().getClassLoader().getResource("c:/earth.jpg"); TextureLoader loader = new TextureLoader(filename, this); ImageComponent2D image = loader.getImage(); Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight()); texture.setImage(0, image); texture.setEnable(true); texture.setMagFilter(Texture.BASE_LEVEL_LINEAR); texture.setMinFilter(Texture.BASE_LEVEL_LINEAR); ap.setTexture(texture); return ap; } } Все библиотеки подключила : j3dutils.jar j3dcore.jar vecmath-1.5.2.jar j3dcore-d3d_dll.jar j3dcore-ogl_dll.jar j3dcore_dll.jar Но у меня выходит ошибка: окт 31, 2012 11:03:25 AM javax.media.j3d.NativePipeline getSupportedOglVendor SEVERE: java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189) at java.security.AccessController.doPrivileged(Native Method) at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180) at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137) at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948) at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280) at java3d.Java3D.init(Java3D.java:35) at com.sun.j3d.utils.applet.MainFrame.run(MainFrame.java:267) at java.lang.Thread.run(Thread.java:722) Работаю в NetBeans 7.2. Привожу проект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 11:31:23 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
You need to put the native files (.dll's) in the path for netbeans to find them. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 11:38:38 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
You must have Java3D DLL in your path. This can be : * C:\Windows\System32 * /JRE/lib/ext folder * same folder you start your application ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 11:39:52 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
grasoff.net, I added all libraries in Java NetBeans Project Properties -> Add Jar file -> libs (mine). I have just done like you said, but error is just the same. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 11:56:28 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_CobskeeI added all libraries in Java NetBeans Project Properties -> Add Jar file -> libs (mine). I have just done like you said, but error is just the same. Сами DLL у вас не подключены: http://www3.ntu.edu.sg/home/ehchua/programming/opengl/java3d.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 12:03:29 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, С этим все получилось, а теперь выпадает вот такая ошибка Exception in thread "Thread-2" java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(ImageIO.java:1388) at com.sun.j3d.utils.image.TextureLoader$2.run(TextureLoader.java:430) at java.security.AccessController.doPrivileged(Native Method) at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:425) at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:380) at java3d.Java3D.createAppearance(Java3D.java:110) at java3d.Java3D.createSceneGraph(Java3D.java:80) at java3d.Java3D.init(Java3D.java:49) at com.sun.j3d.utils.applet.MainFrame.run(MainFrame.java:267) at java.lang.Thread.run(Thread.java:722) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 12:09:19 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Зрите в корень: Helen_Cobskeeinput == null ImageIO TextureLoader ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 12:12:01 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_Cobskee getClass().getClassLoader().getResource("c:/earth.jpg"); Ха. Три раза. Вы понимаете что этот код делает? Или абы что написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 12:13:09 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я понимаю, но ошибку нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 12:16:29 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_Cobskeeinput == null ImageIO TextureLoader Едрён-батно. Кто? TextureLoader. Обрыгался на чем? На загрузке изображения - ImageIO. Почему? Потому что input == null. Ищем в коде, про текстуры. Находим вышеуказаную пургу. getClass().getClassLoader().getResource()/.getResourceAsStream() Относятся к базовым классам Java. Читайте в JavaDoc о том что именно они делают. Из любого места в файловой системе они не читают. Они вообще в файловой системе имеют право не читать. Для чтения файлов есть File и прочий API а пакетах IO. Если вы планируете быть Java разработчиком, то вам стоит знать каждый класс и метод, которые вы используете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 12:21:02 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вы можете сказать, почему у меня не показывается текстура? Ошибок больше нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 14:11:59 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_CobskeeВы можете сказать, почему у меня не показывается текстура? Ошибок больше нет. Потому что filename имеет значение null. Пошаговую отладку так и не осилили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 14:21:55 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Но если бы он не видел image, то сказал, что его нет, но я его закинула туда, где он будет его видеть, но текстура не грузится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 14:49:49 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Создайте java.awt.Image и используйте конструктор TextureLoader с ним. А так ничего не понятно, что вы поменяли, что грузится, что не грузиться, откуда не грузится и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 14:57:18 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Можете ссылку какую-нибудь сбросить с примерами работы с текстурой и картинками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 15:07:33 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_CobskeeМожете ссылку какую-нибудь сбросить с примерами работы с текстурой и картинками? Легко: https://www.google.com/search?q=Java+3D+examples+textureloader ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 15:17:16 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
BlazkowiczHelen_Cobskeeinput == null ImageIO TextureLoader Едрён-батно. Кто? TextureLoader. Обрыгался на чем? На загрузке изображения - ImageIO. Почему? Потому что input == null. Ищем в коде, про текстуры. Находим вышеуказаную пургу. getClass().getClassLoader().getResource()/.getResourceAsStream() Относятся к базовым классам Java. Читайте в JavaDoc о том что именно они делают. Из любого места в файловой системе они не читают. Они вообще в файловой системе имеют право не читать. Для чтения файлов есть File и прочий API а пакетах IO. Если вы планируете быть Java разработчиком, то вам стоит знать каждый класс и метод, которые вы используете.чо огресивный какой ты случилось чо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 22:28:23 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Привет, всем. Кстати, я нашла свою ошибку: строку ap.setTexture(texture) поменяйте на строку ap.setTexture(loader.getTexture()) и все сработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 12:06:01 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем. Подскажите, пожлуйста, где можно скачать бесплатно кгиги по Java 3D графике для начинающих. Скиньте ссылку, если можно. Спасибо всем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 09:37:22 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_CobskeeЗдравствуйте всем. Подскажите, пожлуйста, где можно скачать бесплатно кгиги по Java 3D графике для начинающих. Скиньте ссылку, если можно. Спасибо всемrutracker.org думаю ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 17:31:20 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, всем. Взяла примеры из википедии для изучения OpenGL: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package opengl; /** * * @author IT3 */ import javax.media.opengl.GL; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.glu.GLU; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.media.opengl.awt.*; //import javax.media.opengl.GL; //import javax.media.nativewindow.windows.WindowsGraphicsDevice; //import javax.media.nativewindow. public class OpenGLClass implements GLEventListener, KeyListener { private float rotateT = 0.0f; private static final GLU glu = new GLU(); public void display(GLAutoDrawable gLDrawable) { final GL gl = gLDrawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glClear(GL.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -5.0f); gl.glRotatef(rotateT, 1.0f, 0.0f, 0.0f); gl.glRotatef(rotateT, 0.0f, 1.0f, 0.0f); gl.glRotatef(rotateT, 0.0f, 0.0f, 1.0f); gl.glRotatef(rotateT, 0.0f, 1.0f, 0.0f); gl.glBegin(GL.GL_TRIANGLES); // Front gl.glColor3f(0.0f, 1.0f, 1.0f); gl.glVertex3f(0.0f, 1.0f, 0.0f); gl.glColor3f(0.0f, 0.0f, 1.0f); gl.glVertex3f(-1.0f, -1.0f, 1.0f); gl.glColor3f(0.0f, 0.0f, 0.0f); gl.glVertex3f(1.0f, -1.0f, 1.0f); // Right Side Facing Front gl.glColor3f(0.0f, 1.0f, 1.0f); gl.glVertex3f(0.0f, 1.0f, 0.0f); gl.glColor3f(0.0f, 0.0f, 1.0f); gl.glVertex3f(1.0f, -1.0f, 1.0f); gl.glColor3f(0.0f, 0.0f, 0.0f); gl.glVertex3f(0.0f, -1.0f, -1.0f); // Left Side Facing Front gl.glColor3f(0.0f, 1.0f, 1.0f); gl.glVertex3f(0.0f, 1.0f, 0.0f); gl.glColor3f(0.0f, 0.0f, 1.0f); gl.glVertex3f(0.0f, -1.0f, -1.0f); gl.glColor3f(0.0f, 0.0f, 0.0f); gl.glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom gl.glColor3f(0.0f, 0.0f, 0.0f); gl.glVertex3f(-1.0f, -1.0f, 1.0f); gl.glColor3f(0.1f, 0.1f, 0.1f); gl.glVertex3f(1.0f, -1.0f, 1.0f); gl.glColor3f(0.2f, 0.2f, 0.2f); gl.glVertex3f(0.0f, -1.0f, -1.0f); gl.glEnd(); rotateT += 0.2f; } public void displayChanged(GLAutoDrawable gLDrawable, boolean modeChanged, boolean deviceChanged) { } public void init(GLAutoDrawable gLDrawable) { final GL gl = gLDrawable.getGL(); gl.glShadeModel(GL.GL_SMOOTH); gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glClearDepth(1.0f); gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LEQUAL); gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); gLDrawable.addKeyListener(this); } public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) { final GL gl = gLDrawable.getGL(); if(height <= 0) { height = 1; } final float h = (float)width / (float)height; gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); glu.gluPerspective(50.0f, h, 1.0, 1000.0); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); } public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ESCAPE) { JavaDia.bQuit = true; JavaDia.displayT = null; System.exit(0); } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } @Override public void dispose(GLAutoDrawable glad) { throw new UnsupportedOperationException("Not supported yet."); } } А это класс для реализации этого класса: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package opengl; /** * * @author IT3 */ import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.media.opengl.awt.GLCanvas; public class JavaDia implements Runnable { public static Thread displayT = new Thread(new JavaDia()); public static boolean bQuit = false; public static void main(String[] args) { displayT.start(); } public void run() { Frame frame = new Frame("Jogl 3D Shape/Rotation"); GLCanvas canvas = new GLCanvas(); canvas.addGLEventListener(new OpenGLClass()); frame.add(canvas); frame.setSize(640, 480); frame.setUndecorated(true); int size = frame.getExtendedState(); size |= Frame.MAXIMIZED_BOTH; frame.setExtendedState(size); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { bQuit = true; } }); frame.setVisible(true); // frame.show(); canvas.requestFocus(); while( !bQuit ) { canvas.display(); } } } Работаю в Java NetBeans 7.2. IDE Подключила библиотеку к проекту, которую скачала. Но у меня выходят ошибки. Посмотрите, пожалуйста, мой проект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 17:39:33 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
Helen_Cobskee, Здесь не выкладывает никто кроме вас проекты, просто напишите где ошибка. Судя по тому что реакцию среды на ошибку вы не выкладываете, он даже не компилится. А это значит, что 3д надо отложить в сторону, и вернуться к книгам, которые вам советовали прочитать раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 18:24:52 |
|
||
|
Java3D
|
|||
|---|---|---|---|
|
#18+
javapecker, Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: no nativewindow_jvm in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at com.sun.nativewindow.impl.NativeLibLoaderBase.loadLibraryInternal(NativeLibLoaderBase.java:199) at com.sun.nativewindow.impl.NativeLibLoaderBase.access$000(NativeLibLoaderBase.java:50) at com.sun.nativewindow.impl.NativeLibLoaderBase$DefaultAction.loadLibrary(NativeLibLoaderBase.java:88) at com.sun.nativewindow.impl.NativeLibLoaderBase.loadLibrary(NativeLibLoaderBase.java:126) at com.sun.nativewindow.impl.NativeLibLoaderBase$1.run(NativeLibLoaderBase.java:133) at java.security.AccessController.doPrivileged(Native Method) at com.sun.nativewindow.impl.NativeLibLoaderBase.loadNativeWindow(NativeLibLoaderBase.java:131) at com.sun.nativewindow.impl.jvm.JVMUtil.<clinit>(JVMUtil.java:53) at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:625) at javax.media.opengl.awt.GLCanvas.<clinit>(GLCanvas.java:78) at opengl.JavaDia.run(JavaDia.java:26) at java.lang.Thread.run(Thread.java:722) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2012, 08:44:48 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=261&tid=2130633]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
6ms |
check topic access: |
7ms |
track hit: |
34ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 291ms |
| total: | 467ms |

| 0 / 0 |
