That was just an example to show my problem, I needed to do solve this for every rotation that one could make
However I found a solution thank to another guy with:
float newRotation[] = multiply(rotationX(-dy), rotationY(-dx));
currentRotation = multiply(currentRotation, newRotation);
At every new rotation (within mouseDragged) I call this piece of code, where rotationX(a) returns the rotation matrix for a rotation over X, rotationY does the same over Y
Then I obtain a new rotation matrix that in turn I multiply on right side for the current (or the old, as you prefer) rotation matrix…
In this way I obtain rotation only over x and y axes referred to the coordinating system of the viewer, no matter which rotation you are performing! ;D
However next part is normal vectors, and I am experiencing crashed (or better again memory access violation)
what I do is simply
// in init
// Create the the vertex data
gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL2.GL_NORMAL_ARRAY);
initVertexArray(gl);
initNormalArray(gl);
// specify buffer that hold vertex/normal
gl.glVertexPointer(3, GL2.GL_FLOAT, 0, vertexData);
gl.glNormalPointer(GL2.GL_FLOAT, 0, normalData);
// draw
gl.glDrawArrays(GL.GL_TRIANGLES, 0, triangleNumber*3);
private void initNormalArray(GL2 gl) {
normalData = GLBuffers.newDirectFloatBuffer(triangleNumber*3);
for(int i=0; i<triangleNumber; i++) {
Triangle tmp = triangleArray.get(i);
normalData.put(new float[]{tmp.nx, tmp.ny, tmp.nz});
//System.out.println("nx: "+tmp.nx+" ny: "+tmp.ny+" nz: "+tmp.nz);
}
System.out.println("normalData: "+normalData.toString());
normalData.flip();
System.out.println("normalData: "+normalData.toString());
}
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6b2efd91, pid=8044, tid=7040
JRE version: 6.0_18-b07
Java VM: Java HotSpot™ Client VM (16.0-b13 mixed mode windows-x86 )
Problematic frame:
C 0x6b2efd91
If you would like to submit a bug report, please visit:
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
--------------- T H R E A D ---------------
Current thread (0x6898f000): JavaThread “AWT-EventQueue-0” [_thread_in_native, id=7040, stack(0x6b750000,0x6b7a0000)]
siginfo: ExceptionCode=0xc0000005, reading address 0x689ce000
Registers:
EAX=0x6aff1ce0, EBX=0x6b810000, ECX=0x00001400, EDX=0x00000041
ESP=0x6b79f5b4, EBP=0x3cb8df9e, ESI=0x689ce000, EDI=0x00003c00
EIP=0x6b2efd91, EFLAGS=0x00010206
Top of Stack: (sp=0x6b79f5b4)
0x6b79f5b4: 00000055 6b810000 000013ec 6b3d3e80
0x6b79f5c4: 69c9f47d 6b810000 6aff1afc 000013ec
0x6b79f5d4: 00000055 6b3d3e80 00000000 00000004
0x6b79f5e4: 00000006 00000000 00000055 6b2efd40
0x6b79f5f4: 69c9f5b9 00000004 00001ed7 00003318
0x6b79f604: 6b810000 69631ed1 6b810000 00000004
0x6b79f614: 00000000 00003318 6898f000 60c6a328
0x6b79f624: 60c6a328 6b79f648 693e8c81 00000004
Instructions: (pc=0x6b2efd91)
0x6b2efd81: 08 8b 35 28 5c 83 6b 8b 76 30 8d 3c 49 8d 34 be
0x6b2efd91: 8b 3e 8b 6e 04 89 78 0c 89 68 10 8b 7e 08 89 78
Stack: [0x6b750000,0x6b7a0000], sp=0x6b79f5b4, free space=13d6b79f0e8k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C 0x6b2efd91
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j jogamp.opengl.gl4.GL4bcImpl.dispatch_glDrawArrays1(IIIJ)V+0
j jogamp.opengl.gl4.GL4bcImpl.glDrawArrays(III)V+39
j Viewer.init(Ljavax/media/opengl/GLAutoDrawable;)V+170
j jogamp.opengl.GLDrawableHelper.init(Ljavax/media/opengl/GLEventListener;Ljavax/media/opengl/GLAutoDrawable;Z)Z+13
j jogamp.opengl.GLDrawableHelper.init(Ljavax/media/opengl/GLAutoDrawable;)V+48
j javax.media.opengl.awt.GLCanvas$InitAction.run()V+11
j jogamp.opengl.GLDrawableHelper.invokeGL(Ljavax/media/opengl/GLDrawable;Ljavax/media/opengl/GLContext;Ljava/lang/Runnable;Ljava/lang/Runnable;)V+238
j javax.media.opengl.awt.GLCanvas.maybeDoSingleThreadedWorkaround(Ljava/lang/Runnable;Ljava/lang/Runnable;)V+36
j javax.media.opengl.awt.GLCanvas.display()V+31
j javax.media.opengl.awt.GLCanvas.paint(Ljava/awt/Graphics;)V+135
j sun.awt.RepaintArea.paintComponent(Ljava/awt/Component;Ljava/awt/Graphics;)V+6
j sun.awt.RepaintArea.paint(Ljava/lang/Object;Z)V+326
j sun.awt.windows.WComponentPeer.handleEvent(Ljava/awt/AWTEvent;)V+107
j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+853
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x689bc400 JavaThread “Timer-0” [_thread_blocked, id=6892, stack(0x6bd60000,0x6bdb0000)]
0x002b8400 JavaThread “DestroyJavaVM” [_thread_blocked, id=7416, stack(0x008c0000,0x00910000)]
0x68981c00 JavaThread “D3D Screen Updater” daemon [_thread_blocked, id=4776, stack(0x6b7a0000,0x6b7f0000)]
=>0x6898f000 JavaThread “AWT-EventQueue-0” [_thread_in_native, id=7040, stack(0x6b750000,0x6b7a0000)]
0x68972400 JavaThread “AWT-Shutdown” [_thread_blocked, id=5124, stack(0x6a950000,0x6a9a0000)]
0x68983800 JavaThread “main-SharedResourceRunner” daemon [_thread_blocked, id=8024, stack(0x69460000,0x694b0000)]
0x6698f400 JavaThread “AWT-Windows” daemon [_thread_in_native, id=7808, stack(0x68e50000,0x68ea0000)]
0x66e10800 JavaThread “Java2D Disposer” daemon [_thread_blocked, id=4116, stack(0x68db0000,0x68e00000)]
0x66973400 JavaThread “Low Memory Detector” daemon [_thread_blocked, id=4944, stack(0x66bc0000,0x66c10000)]
0x6696d400 JavaThread “CompilerThread0” daemon [_thread_blocked, id=6876, stack(0x66b70000,0x66bc0000)]
0x6696bc00 JavaThread “Attach Listener” daemon [_thread_blocked, id=5056, stack(0x66b20000,0x66b70000)]
0x6696a800 JavaThread “Signal Dispatcher” daemon [_thread_blocked, id=3220, stack(0x66ad0000,0x66b20000)]
0x66959400 JavaThread “Finalizer” daemon [_thread_blocked, id=5640, stack(0x66a80000,0x66ad0000)]
0x66954800 JavaThread “Reference Handler” daemon [_thread_blocked, id=5892, stack(0x66a30000,0x66a80000)]
Other Threads:
0x66951c00 VMThread [stack: 0x669e0000,0x66a30000] [id=8088]
0x6697e000 WatcherThread [stack: 0x66c10000,0x66c60000] [id=1320]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 4928K, used 3332K [0x02990000, 0x02ee0000, 0x21d90000)
eden space 4416K, 72% used [0x02990000, 0x02cab1c0, 0x02de0000)
from space 512K, 29% used [0x02e60000, 0x02e85f70, 0x02ee0000)
to space 512K, 0% used [0x02de0000, 0x02de0000, 0x02e60000)
tenured generation total 10944K, used 2894K [0x21d90000, 0x22840000, 0x60590000)
the space 10944K, 26% used [0x21d90000, 0x22063b48, 0x22063c00, 0x22840000)
compacting perm gen total 12288K, used 11034K [0x60590000, 0x61190000, 0x64590000)
the space 12288K, 89% used [0x60590000, 0x610569d0, 0x61056a00, 0x61190000)
No shared spaces configured.
Dynamic libraries:
0x00400000 - 0x00424000 H:\Programme\Java\jdk1.6.0_18\bin\java.exe
0x7c910000 - 0x7c9c9000 H:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c908000 H:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e4a000 H:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee3000 H:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 H:\WINDOWS\system32\Secur32.dll
0x7c340000 - 0x7c396000 H:\Programme\Java\jdk1.6.0_18\jre\bin\msvcr71.dll
0x6d8b0000 - 0x6db47000 H:\Programme\Java\jdk1.6.0_18\jre\bin\client\jvm.dll
0x7e360000 - 0x7e3f1000 H:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 H:\WINDOWS\system32\GDI32.dll
0x76af0000 - 0x76b1e000 H:\WINDOWS\system32\WINMM.dll
0x76330000 - 0x7634d000 H:\WINDOWS\system32\IMM32.DLL
0x6d860000 - 0x6d86c000 H:\Programme\Java\jdk1.6.0_18\jre\bin\verify.dll
0x6d3e0000 - 0x6d3ff000 H:\Programme\Java\jdk1.6.0_18\jre\bin\java.dll
0x6d340000 - 0x6d348000 H:\Programme\Java\jdk1.6.0_18\jre\bin\hpi.dll
0x76bb0000 - 0x76bbb000 H:\WINDOWS\system32\PSAPI.DLL
0x6d8a0000 - 0x6d8af000 H:\Programme\Java\jdk1.6.0_18\jre\bin\zip.dll
0x68000000 - 0x68036000 H:\WINDOWS\system32\rsaenh.dll
0x77be0000 - 0x77c38000 H:\WINDOWS\system32\msvcrt.dll
0x76620000 - 0x766d6000 H:\WINDOWS\system32\USERENV.dll
0x66e80000 - 0x66ed5000 H:\WINDOWS\system32\netapi32.dll
0x6d6c0000 - 0x6d6d3000 H:\Programme\Java\jdk1.6.0_18\jre\bin\net.dll
0x71a10000 - 0x71a27000 H:\WINDOWS\system32\WS2_32.dll
0x71a00000 - 0x71a08000 H:\WINDOWS\system32\WS2HELP.dll
0x719b0000 - 0x719f0000 H:\WINDOWS\System32\mswsock.dll
0x76ee0000 - 0x76f07000 H:\WINDOWS\system32\DNSAPI.dll
0x76d20000 - 0x76d39000 H:\WINDOWS\system32\iphlpapi.dll
0x76f70000 - 0x76f78000 H:\WINDOWS\System32\winrnr.dll
0x76f20000 - 0x76f4d000 H:\WINDOWS\system32\WLDAP32.dll
0x76f80000 - 0x76f86000 H:\WINDOWS\system32\rasadhlp.dll
0x66f70000 - 0x66f9b000 H:\Dokumente und Einstellungen\gbarbieri\Lokale Einstellungen\Temp\JCudaDriver-windows-x865311847391007711519.dll
0x66fb0000 - 0x674ef000 H:\WINDOWS\system32\nvcuda.dll
0x67520000 - 0x67733000 H:\WINDOWS\system32\nvapi.dll
0x774b0000 - 0x775ee000 H:\WINDOWS\system32\ole32.dll
0x770f0000 - 0x7717b000 H:\WINDOWS\system32\OLEAUT32.dll
0x77f40000 - 0x77fb6000 H:\WINDOWS\system32\SHLWAPI.dll
0x7e670000 - 0x7ee91000 H:\WINDOWS\system32\SHELL32.dll
0x778f0000 - 0x779e4000 H:\WINDOWS\system32\SETUPAPI.dll
0x77bd0000 - 0x77bd8000 H:\WINDOWS\system32\VERSION.dll
0x773a0000 - 0x774a3000 H:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
0x6d6e0000 - 0x6d6e9000 H:\Programme\Java\jdk1.6.0_18\jre\bin\nio.dll
0x67f50000 - 0x67f5a000 H:\Dokumente und Einstellungen\gbarbieri\Lokale Einstellungen\Temp\jogamp.tmp.cache_000000\jln335667427994843198\jln4822347258357380250\gluegen-rt.dll
0x6d0b0000 - 0x6d1fa000 H:\Programme\Java\jdk1.6.0_18\jre\bin\awt.dll
0x72f70000 - 0x72f96000 H:\WINDOWS\system32\WINSPOOL.DRV
0x67f80000 - 0x67fb8000 H:\WINDOWS\system32\uxtheme.dll
0x746a0000 - 0x746ec000 H:\WINDOWS\system32\MSCTF.dll
0x75250000 - 0x7527e000 H:\WINDOWS\system32\msctfime.ime
0x6d410000 - 0x6d416000 H:\Programme\Java\jdk1.6.0_18\jre\bin\jawt.dll
0x6a440000 - 0x6a44a000 H:\Dokumente und Einstellungen\gbarbieri\Lokale Einstellungen\Temp\jogamp.tmp.cache_000000\jln335667427994843198\jln4822347258357380250\nativewindow_awt.dll
0x6d2e0000 - 0x6d334000 H:\Programme\Java\jdk1.6.0_18\jre\bin\fontmanager.dll
0x68ee0000 - 0x69086000 H:\WINDOWS\system32\d3d9.dll
0x6de80000 - 0x6de86000 H:\WINDOWS\system32\d3d8thk.dll
0x6c100000 - 0x6c110000 H:\Dokumente und Einstellungen\gbarbieri\Lokale Einstellungen\Temp\jogamp.tmp.cache_000000\jln335667427994843198\jln4822347258357380250\nativewindow_win32.dll
0x692f0000 - 0x693bc000 H:\WINDOWS\system32\OpenGL32.dll
0x693c0000 - 0x693e0000 H:\WINDOWS\system32\GLU32.dll
0x736d0000 - 0x7371b000 H:\WINDOWS\system32\DDRAW.dll
0x73b30000 - 0x73b36000 H:\WINDOWS\system32\DCIMAN32.dll
0x693e0000 - 0x69453000 H:\Dokumente und Einstellungen\gbarbieri\Lokale Einstellungen\Temp\jogamp.tmp.cache_000000\jln335667427994843198\jln4822347258357380250\jogl_desktop.dll
0x69500000 - 0x6a34a000 H:\WINDOWS\system32\nvoglnt.dll
VM Arguments:
jvm_args: -Dfile.encoding=UTF-8 -Xmx1500m -XX:MaxDirectMemorySize=256m
java_command: CudaImplementation
Launcher Type: SUN_STANDARD
Environment Variables:
PATH=H:\Programme\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin;H:\WINDOWS\system32;H:\WINDOWS;H:\WINDOWS\System32\Wbem;h:\Programme\Microsoft SQL Server\90\Tools\binn;H:\IFOR\WIN\BIN;H:\IFOR\WIN\BIN\EN_US;H:\Programme\Microsoft Visual Studio 10.0\VC\bin;H:\Programme\Microsoft Visual Studio 10.0\VC\bin
USERNAME=gbarbieri
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows XP Build 2600 Service Pack 3
CPU:total 4 (4 cores per cpu, 1 threads per core) family 6 model 23 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1
Memory: 4k page, physical 3144748k(831488k free), swap 5070780k(2614724k free)
vm_info: Java HotSpot™ Client VM (16.0-b13) for windows-x86 JRE (1.6.0_18-b07), built on Dec 17 2009 13:35:55 by “java_re” with MS VC++ 7.1 (VS2003)
time: Wed Dec 21 10:55:20 2011
elapsed time: 13 seconds
Where am I wrong?