[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38908] trunk/blender: 3D mouse support from merwin-spacenav branch
Mike Erwin
significant.bit at gmail.com
Tue Aug 2 06:28:06 CEST 2011
Revision: 38908
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38908
Author: merwin
Date: 2011-08-02 04:28:05 +0000 (Tue, 02 Aug 2011)
Log Message:
-----------
3D mouse support from merwin-spacenav branch
Modified Paths:
--------------
trunk/blender/CMakeLists.txt
trunk/blender/build_files/cmake/macros.cmake
trunk/blender/build_files/scons/config/darwin-config.py
trunk/blender/build_files/scons/config/linux2-config.py
trunk/blender/intern/ghost/CMakeLists.txt
trunk/blender/intern/ghost/GHOST_C-api.h
trunk/blender/intern/ghost/GHOST_ISystem.h
trunk/blender/intern/ghost/GHOST_Types.h
trunk/blender/intern/ghost/SConscript
trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
trunk/blender/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp
trunk/blender/intern/ghost/intern/GHOST_DropTargetWin32.cpp
trunk/blender/intern/ghost/intern/GHOST_DropTargetWin32.h
trunk/blender/intern/ghost/intern/GHOST_EventManager.cpp
trunk/blender/intern/ghost/intern/GHOST_EventNDOF.h
trunk/blender/intern/ghost/intern/GHOST_NDOFManager.cpp
trunk/blender/intern/ghost/intern/GHOST_NDOFManager.h
trunk/blender/intern/ghost/intern/GHOST_System.cpp
trunk/blender/intern/ghost/intern/GHOST_System.h
trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h
trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
trunk/blender/intern/ghost/intern/GHOST_SystemPathsWin32.cpp
trunk/blender/intern/ghost/intern/GHOST_SystemPathsWin32.h
trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h
trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
trunk/blender/intern/ghost/intern/GHOST_SystemX11.h
trunk/blender/intern/ghost/intern/GHOST_TaskbarWin32.h
trunk/blender/intern/ghost/intern/GHOST_WindowWin32.h
trunk/blender/release/scripts/startup/bl_ui/space_userpref.py
trunk/blender/release/scripts/startup/bl_ui/space_userpref_keymap.py
trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
trunk/blender/source/blender/blenkernel/BKE_global.h
trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
trunk/blender/source/blender/editors/interface/resources.c
trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
trunk/blender/source/blender/editors/space_image/image_intern.h
trunk/blender/source/blender/editors/space_image/image_ops.c
trunk/blender/source/blender/editors/space_image/space_image.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
trunk/blender/source/blender/editors/space_view3d/view3d_fly.c
trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
trunk/blender/source/blender/editors/transform/transform.c
trunk/blender/source/blender/editors/transform/transform_ops.c
trunk/blender/source/blender/makesdna/DNA_userdef_types.h
trunk/blender/source/blender/makesdna/DNA_view3d_types.h
trunk/blender/source/blender/makesrna/intern/rna_userdef.c
trunk/blender/source/blender/makesrna/intern/rna_wm.c
trunk/blender/source/blender/windowmanager/WM_types.h
trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
trunk/blender/source/blender/windowmanager/intern/wm_operators.c
trunk/blender/source/blender/windowmanager/intern/wm_window.c
trunk/blender/source/blender/windowmanager/wm_event_types.h
Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/CMakeLists.txt 2011-08-02 04:28:05 UTC (rev 38908)
@@ -179,6 +179,7 @@
option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
# Misc
+option(WITH_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
if(UNIX AND NOT APPLE)
option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
@@ -452,6 +453,15 @@
endif()
endif()
+ if (WITH_NDOF)
+ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ set(NDOF /usr)
+ set(NDOF_INC ${NDOF}/include)
+ set(NDOF_LIBRARY spnav)
+ set(NDOF_LIBPATH ${NDOF}/lib)
+ endif()
+ endif()
+
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
@@ -1029,6 +1039,10 @@
set(TIFF_LIBPATH ${TIFF}/lib)
endif()
+ if (WITH_NDOF)
+ # linker needs "-weak_framework 3DconnexionClient"
+ endif()
+
set(EXETYPE MACOSX_BUNDLE)
set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/build_files/cmake/macros.cmake 2011-08-02 04:28:05 UTC (rev 38908)
@@ -193,6 +193,9 @@
if(WITH_MEM_JEMALLOC)
link_directories(${JEMALLOC_LIBPATH})
endif()
+ if(WITH_NDOF)
+ link_directories(${NDOF_LIBPATH})
+ endif()
if(WIN32 AND NOT UNIX)
link_directories(${PTHREADS_LIBPATH})
@@ -314,6 +317,10 @@
if(WITH_MEM_JEMALLOC)
target_link_libraries(${target} ${JEMALLOC_LIBRARIES})
endif()
+ if(WITH_NDOF)
+ target_link_libraries(${target} ${NDOF_LIBRARY})
+ endif()
+
if(WIN32 AND NOT UNIX)
target_link_libraries(${target} ${PTHREADS_LIBRARIES})
endif()
Modified: trunk/blender/build_files/scons/config/darwin-config.py
===================================================================
--- trunk/blender/build_files/scons/config/darwin-config.py 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/build_files/scons/config/darwin-config.py 2011-08-02 04:28:05 UTC (rev 38908)
@@ -264,8 +264,10 @@
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse']
elif MACOSX_ARCHITECTURE == 'x86_64':
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2']
-
+# SpaceNavigator and related 3D mice
+WITH_BF_3DMOUSE = True
+
#############################################################################
################### various compile settings and flags ##################
#############################################################################
@@ -294,6 +296,9 @@
else:
PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS+['-framework','QuickTime']
+if WITH_BF_3DMOUSE:
+ PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS + ['-weak_framework','3DconnexionClient']
+
#note to build succesfully on 10.3.9 SDK you need to patch 10.3.9 by adding the SystemStubs.a lib from 10.4
LLIBS = ['stdc++', 'SystemStubs']
Modified: trunk/blender/build_files/scons/config/linux2-config.py
===================================================================
--- trunk/blender/build_files/scons/config/linux2-config.py 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/build_files/scons/config/linux2-config.py 2011-08-02 04:28:05 UTC (rev 38908)
@@ -192,6 +192,10 @@
WITH_BF_RAYOPTIMIZATION = True
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
+#SpaceNavigator and friends
+WITH_BF_3DMOUSE = True
+BF_3DMOUSE_LIB = 'spnav'
+
##
CC = 'gcc'
CXX = 'g++'
@@ -223,6 +227,8 @@
##FIX_STUBS_WARNINGS = -Wno-unused
LLIBS = ['util', 'c', 'm', 'dl', 'pthread', 'stdc++']
+if WITH_BF_3DMOUSE:
+ LLIBS = LLIBS + [BF_3DMOUSE_LIB];
##LOPTS = --dynamic
##DYNLDFLAGS = -shared $(LDFLAGS)
Modified: trunk/blender/intern/ghost/CMakeLists.txt
===================================================================
--- trunk/blender/intern/ghost/CMakeLists.txt 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/intern/ghost/CMakeLists.txt 2011-08-02 04:28:05 UTC (rev 38908)
@@ -158,11 +158,13 @@
intern/GHOST_SystemCocoa.mm
intern/GHOST_SystemPathsCocoa.mm
intern/GHOST_WindowCocoa.mm
-
+ intern/GHOST_NDOFManagerCocoa.mm
+
intern/GHOST_DisplayManagerCocoa.h
intern/GHOST_SystemCocoa.h
intern/GHOST_SystemPathsCocoa.h
intern/GHOST_WindowCocoa.h
+ intern/GHOST_NDOFManagerCocoa.h
)
else()
list(APPEND SRC
@@ -197,11 +199,13 @@
intern/GHOST_SystemX11.cpp
intern/GHOST_SystemPathsX11.cpp
intern/GHOST_WindowX11.cpp
+ intern/GHOST_NDOFManagerX11.cpp
intern/GHOST_DisplayManagerX11.h
intern/GHOST_SystemX11.h
intern/GHOST_SystemPathsX11.h
intern/GHOST_WindowX11.h
+ intern/GHOST_NDOFManagerX11.h
)
if(NOT WITH_INSTALL_PORTABLE)
@@ -230,6 +234,7 @@
intern/GHOST_SystemPathsWin32.cpp
intern/GHOST_WindowWin32.cpp
intern/GHOST_DropTargetWin32.cpp
+ intern/GHOST_NDOFManagerWin32.cpp
intern/GHOST_DisplayManagerWin32.h
intern/GHOST_DropTargetWin32.h
@@ -237,6 +242,7 @@
intern/GHOST_SystemPathsWin32.h
intern/GHOST_WindowWin32.h
intern/GHOST_TaskbarWin32.h
+ intern/GHOST_NDOFManagerWin32.h
)
endif()
Modified: trunk/blender/intern/ghost/GHOST_C-api.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_C-api.h 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/intern/ghost/GHOST_C-api.h 2011-08-02 04:28:05 UTC (rev 38908)
@@ -288,21 +288,6 @@
* @param windowhandle The handle to the window
*/
extern GHOST_TSuccess GHOST_EndProgressBar(GHOST_WindowHandle windowhandle);
-
-
-/***************************************************************************************
- ** N-degree of freedom device management functionality
- ***************************************************************************************/
-
-/**
-* Open N-degree of freedom devices
- */
-extern int GHOST_OpenNDOF(GHOST_SystemHandle systemhandle,
- GHOST_WindowHandle windowhandle,
- GHOST_NDOFLibraryInit_fp setNdofLibraryInit,
- GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
- GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen
- );
/***************************************************************************************
** Cursor management functionality
Modified: trunk/blender/intern/ghost/GHOST_ISystem.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_ISystem.h 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/intern/ghost/GHOST_ISystem.h 2011-08-02 04:28:05 UTC (rev 38908)
@@ -298,22 +298,6 @@
*/
virtual GHOST_TSuccess removeEventConsumer(GHOST_IEventConsumer* consumer) = 0;
- /***************************************************************************************
- ** N-degree of freedom device management functionality
- ***************************************************************************************/
-
- /**
- * Starts the N-degree of freedom device manager
- */
- virtual int openNDOF(GHOST_IWindow*,
- GHOST_NDOFLibraryInit_fp setNdofLibraryInit,
- GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
- GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen
- // original patch only
- // GHOST_NDOFEventHandler_fp setNdofEventHandler
- ) = 0;
-
-
/***************************************************************************************
** Cursor management functionality
***************************************************************************************/
Modified: trunk/blender/intern/ghost/GHOST_Types.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_Types.h 2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/intern/ghost/GHOST_Types.h 2011-08-02 04:28:05 UTC (rev 38908)
@@ -47,11 +47,6 @@
typedef int GHOST_TInt32;
typedef unsigned int GHOST_TUns32;
-#ifdef WIN32
-#define WM_BLND_NDOF_AXIS WM_USER + 1
-#define WM_BLND_NDOF_BTN WM_USER + 2
-#endif
-
#if defined(WIN32) && !defined(FREE_WINDOWS)
typedef __int64 GHOST_TInt64;
typedef unsigned __int64 GHOST_TUns64;
@@ -440,38 +435,34 @@
GHOST_TUns8 **strings;
} GHOST_TStringArray;
+typedef enum {
+ GHOST_kNotStarted,
+ GHOST_kStarting,
+ GHOST_kInProgress,
+ GHOST_kFinishing,
+ GHOST_kFinished
+ } GHOST_TProgress;
-/* original patch used floats, but the driver return ints and uns. We will calibrate in view, no sense on doing conversions twice */
-/* as all USB device controls are likely to use ints, this is also more future proof */
-//typedef struct {
-// /** N-degree of freedom device data */
-// float tx, ty, tz; /** -x left, +y up, +z forward */
-// float rx, ry, rz;
-// float dt;
-//} GHOST_TEventNDOFData;
-
typedef struct {
- /** N-degree of freedom device data v2*/
- int changed;
- GHOST_TUns64 client;
- GHOST_TUns64 address;
- GHOST_TInt16 tx, ty, tz; /** -x left, +y up, +z forward */
- GHOST_TInt16 rx, ry, rz;
- GHOST_TInt16 buttons;
- GHOST_TUns64 time;
- GHOST_TUns64 delta;
-} GHOST_TEventNDOFData;
+ /** N-degree of freedom device data v3 [GSoC 2010] */
+ // Each component normally ranges from -1 to +1, but can exceed that.
+ // These use blender standard view coordinates, with positive rotations being CCW about the axis.
+ float tx, ty, tz; // translation
+ float rx, ry, rz; // rotation:
+ // axis = (rx,ry,rz).normalized
+ // amount = (rx,ry,rz).magnitude [in revolutions, 1.0 = 360 deg]
+ float dt; // time since previous NDOF Motion event
+ GHOST_TProgress progress; // Starting, InProgress or Finishing (for modal handlers)
+} GHOST_TEventNDOFMotionData;
-typedef int (*GHOST_NDOFLibraryInit_fp)(void);
-typedef void (*GHOST_NDOFLibraryShutdown_fp)(void* deviceHandle);
-typedef void* (*GHOST_NDOFDeviceOpen_fp)(void* platformData);
+typedef enum { GHOST_kPress, GHOST_kRelease } GHOST_TButtonAction;
+ // good for mouse or other buttons too, hmmm?
-// original patch windows callback. In mac os X version the callback is internal to the plug-in and post an event to main thead.
-// not necessary faster, but better integration with other events.
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list