Merge remote-tracking branch 'bp/master'

This commit is contained in:
erwincoumans
2018-04-12 12:48:37 -07:00
9 changed files with 113 additions and 31 deletions

View File

@@ -6,13 +6,9 @@ in Fragment
vec4 color; vec4 color;
} fragment; } fragment;
in Vert
{
vec2 texcoord;
} vert;
uniform sampler2D Diffuse; uniform sampler2D Diffuse;
uniform mat4 ViewMatrixInverse; uniform mat4 ViewMatrixInverse;
uniform mat4 TextureMVP;
in vec3 lightPos,cameraPosition, normal,ambient; in vec3 lightPos,cameraPosition, normal,ambient;
in vec4 vertexPos; in vec4 vertexPos;
@@ -23,10 +19,11 @@ in vec3 materialSpecularColor;
out vec4 color; out vec4 color;
void main(void) void main(void)
{ {
vec4 texel = fragment.color*texture(Diffuse,vert.texcoord.xy); vec4 projcoords = TextureMVP * vertexPos;
vec2 texturecoords = projcoords.xy/max(projcoords.z,0.1);
vec4 texel = fragment.color*texture(Diffuse,texturecoords);
vec3 ct,cf; vec3 ct,cf;
float intensity,at,af; float intensity,at,af;
if (fragment.color.w==0) if (fragment.color.w==0)

View File

@@ -6,12 +6,9 @@ static const char* projectiveTextureInstancingFragmentShader= \
"{\n" "{\n"
" vec4 color;\n" " vec4 color;\n"
"} fragment;\n" "} fragment;\n"
"in Vert\n"
"{\n"
" vec2 texcoord;\n"
"} vert;\n"
"uniform sampler2D Diffuse;\n" "uniform sampler2D Diffuse;\n"
"uniform mat4 ViewMatrixInverse;\n" "uniform mat4 ViewMatrixInverse;\n"
"uniform mat4 TextureMVP;\n"
"in vec3 lightPos,cameraPosition, normal,ambient;\n" "in vec3 lightPos,cameraPosition, normal,ambient;\n"
"in vec4 vertexPos;\n" "in vec4 vertexPos;\n"
"in float materialShininess;\n" "in float materialShininess;\n"
@@ -20,7 +17,9 @@ static const char* projectiveTextureInstancingFragmentShader= \
"out vec4 color;\n" "out vec4 color;\n"
"void main(void)\n" "void main(void)\n"
"{\n" "{\n"
" vec4 texel = fragment.color*texture(Diffuse,vert.texcoord.xy);\n" " vec4 projcoords = TextureMVP * vertexPos;\n"
" vec2 texturecoords = projcoords.xy/max(projcoords.z,0.1);\n"
" vec4 texel = fragment.color*texture(Diffuse,texturecoords);\n"
" vec3 ct,cf;\n" " vec3 ct,cf;\n"
" float intensity,at,af;\n" " float intensity,at,af;\n"
" if (fragment.color.w==0)\n" " if (fragment.color.w==0)\n"

View File

@@ -93,7 +93,5 @@ void main(void)
gl_Position = vertexLoc; gl_Position = vertexLoc;
fragment.color = instance_color; fragment.color = instance_color;
vec4 projcoords = TextureMVP * vec4((instance_position+localcoord).xyz,1);
vert.texcoord = projcoords.xy/projcoords.z;
} }

View File

@@ -80,7 +80,5 @@ static const char* projectiveTextureInstancingVertexShader= \
" vec4 vertexLoc = MVP* vec4((instance_position+localcoord).xyz,1);\n" " vec4 vertexLoc = MVP* vec4((instance_position+localcoord).xyz,1);\n"
" gl_Position = vertexLoc;\n" " gl_Position = vertexLoc;\n"
" fragment.color = instance_color;\n" " fragment.color = instance_color;\n"
" vec4 projcoords = TextureMVP * vec4((instance_position+localcoord).xyz,1);\n"
" vert.texcoord = projcoords.xy/projcoords.z;\n"
"}\n" "}\n"
; ;

View File

@@ -211,7 +211,7 @@ IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
#VR/OpenVR only on Windows and Mac OSX for now #VR/OpenVR on Windows and Mac OSX
IF (WIN32 OR APPLE) IF (WIN32 OR APPLE)
INCLUDE_DIRECTORIES( INCLUDE_DIRECTORIES(
@@ -325,4 +325,80 @@ IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo") SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo")
ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES) ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
#VR/OpenVR on Linux
ELSE(WIN32 OR APPLE)
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
LINK_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/bin/linux64)
ELSE()
LINK_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/bin/linux32)
ENDIF()
ADD_EXECUTABLE(App_PhysicsServer_SharedMemory_VR
${SharedMemory_SRCS}
../StandaloneMain/hellovr_opengl_main.cpp
../ExampleBrowser/OpenGLGuiHelper.cpp
../ExampleBrowser/GL_ShapeDrawer.cpp
../ExampleBrowser/CollisionShape2TriangleMesh.cpp
../RenderingExamples/TinyVRGui.cpp
../RenderingExamples/TinyVRGui.h
../RenderingExamples/TimeSeriesCanvas.cpp
../RenderingExamples/TimeSeriesFontData.cpp
../MultiThreading/b3PosixThreadSupport.cpp
../MultiThreading/b3PosixThreadSupport.h
../ThirdPartyLibs/openvr/samples/shared/lodepng.cpp
../ThirdPartyLibs/openvr/samples/shared/lodepng.h
../ThirdPartyLibs/openvr/samples/shared/Matrices.cpp
../ThirdPartyLibs/openvr/samples/shared/Matrices.h
../ThirdPartyLibs/openvr/samples/shared/pathtools.cpp
../ThirdPartyLibs/openvr/samples/shared/pathtools.h
../ThirdPartyLibs/openvr/samples/shared/strtools.cpp
../ThirdPartyLibs/openvr/samples/shared/strtools.h
../ThirdPartyLibs/openvr/samples/shared/Vectors.h
)
target_include_directories(App_PhysicsServer_SharedMemory_VR PRIVATE
${BULLET_PHYSICS_SOURCE_DIR}/src
${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs
${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/Glew
${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/headers
${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/samples
${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/openvr/samples/shared
)
target_compile_definitions(App_PhysicsServer_SharedMemory_VR PRIVATE
POSIX
LINUX
BT_ENABLE_VR
GLEW_STATIC
GLEW_INIT_OPENGL11_FUNCTIONS=1
GLEW_DYNAMIC_LOAD_ALL_GLX_FUNCTIONS=1
)
target_compile_options(App_PhysicsServer_SharedMemory_VR PRIVATE
-std=c++11
)
target_link_libraries(App_PhysicsServer_SharedMemory_VR PRIVATE
openvr_api
pthread
${DL}
${OPENGL_gl_LIBRARY}
${OPENGL_glu_LIBRARY}
Bullet3Common
BulletWorldImporter
BulletInverseDynamicsUtils
BulletInverseDynamics
BulletDynamics
BulletCollision
LinearMath
BussIK
OpenGLWindow
)
IF (INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES DEBUG_POSTFIX "_Debug")
SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES MINSIZEREL_POSTFIX "_MinsizeRel")
SET_TARGET_PROPERTIES(App_PhysicsServer_SharedMemory_VR PROPERTIES RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo")
ENDIF(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES)
ENDIF(WIN32 OR APPLE) ENDIF(WIN32 OR APPLE)

View File

@@ -59,6 +59,9 @@ static vr::VRControllerState_t sPrevStates[vr::k_unMaxTrackedDeviceCount] = { 0
#ifdef _WIN32 #ifdef _WIN32
#include <Windows.h> #include <Windows.h>
#endif #endif
#ifdef __linux__
#define APIENTRY
#endif
void ThreadSleep( unsigned long nMilliseconds ) void ThreadSleep( unsigned long nMilliseconds )
{ {
@@ -1804,13 +1807,11 @@ void CMainApplication::RenderStereoTargets()
} }
glBindFramebuffer( GL_FRAMEBUFFER, leftEyeDesc.m_nRenderFramebufferId ); glBindFramebuffer( GL_FRAMEBUFFER, leftEyeDesc.m_nRenderFramebufferId );
glViewport(0, 0, m_nRenderWidth, m_nRenderHeight );
m_app->m_window->startRendering(); m_app->m_window->startRendering();
glViewport(0, 0, m_nRenderWidth, m_nRenderHeight );
RenderScene( vr::Eye_Left ); RenderScene( vr::Eye_Left );
@@ -1863,9 +1864,9 @@ void CMainApplication::RenderStereoTargets()
} }
glBindFramebuffer( GL_FRAMEBUFFER, rightEyeDesc.m_nRenderFramebufferId ); glBindFramebuffer( GL_FRAMEBUFFER, rightEyeDesc.m_nRenderFramebufferId );
glViewport(0, 0, m_nRenderWidth, m_nRenderHeight );
m_app->m_window->startRendering(); m_app->m_window->startRendering();
glViewport(0, 0, m_nRenderWidth, m_nRenderHeight );
RenderScene( vr::Eye_Right ); RenderScene( vr::Eye_Right );
@@ -2081,6 +2082,7 @@ void CMainApplication::UpdateHMDMatrixPose()
case vr::TrackedDeviceClass_HMD: m_rDevClassChar[nDevice] = 'H'; break; case vr::TrackedDeviceClass_HMD: m_rDevClassChar[nDevice] = 'H'; break;
case vr::TrackedDeviceClass_Invalid: m_rDevClassChar[nDevice] = 'I'; break; case vr::TrackedDeviceClass_Invalid: m_rDevClassChar[nDevice] = 'I'; break;
case vr::TrackedDeviceClass_TrackingReference: m_rDevClassChar[nDevice] = 'T'; break; case vr::TrackedDeviceClass_TrackingReference: m_rDevClassChar[nDevice] = 'T'; break;
case vr::TrackedDeviceClass_GenericTracker: m_rDevClassChar[nDevice] = 'G'; break;
default: m_rDevClassChar[nDevice] = '?'; break; default: m_rDevClassChar[nDevice] = '?'; break;
} }
} }

View File

@@ -4,6 +4,12 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef __linux__
#define stricmp strcasecmp
#define strnicmp strncasecmp
#endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@@ -1,6 +1,5 @@
import pybullet as p import pybullet as p
from time import sleep from time import sleep
from PIL import Image
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
@@ -9,7 +8,7 @@ physicsClient = p.connect(p.GUI)
p.setGravity(0,0,0) p.setGravity(0,0,0)
bearStartPos1 = [-3.3,0,0] bearStartPos1 = [-3.3,0,0]
bearStartOrientation1 = p.getQuaternionFromEuler([0,0,0]) bearStartOrientation1 = p.getQuaternionFromEuler([0,0,0])
bearId1 = p.loadURDF("teddy_large.urdf", bearStartPos1, bearStartOrientation1) bearId1 = p.loadURDF("plane.urdf", bearStartPos1, bearStartOrientation1)
bearStartPos2 = [0,0,0] bearStartPos2 = [0,0,0]
bearStartOrientation2 = p.getQuaternionFromEuler([0,0,0]) bearStartOrientation2 = p.getQuaternionFromEuler([0,0,0])
bearId2 = p.loadURDF("teddy_large.urdf",bearStartPos2, bearStartOrientation2) bearId2 = p.loadURDF("teddy_large.urdf",bearStartPos2, bearStartOrientation2)

View File

@@ -121,12 +121,19 @@ void btRaycastVehicle::updateWheelTransform( int wheelIndex , bool interpolatedT
btQuaternion rotatingOrn(right,-wheel.m_rotation); btQuaternion rotatingOrn(right,-wheel.m_rotation);
btMatrix3x3 rotatingMat(rotatingOrn); btMatrix3x3 rotatingMat(rotatingOrn);
btMatrix3x3 basis2( btMatrix3x3 basis2;
right[0],fwd[0],up[0], basis2[0][m_indexRightAxis] = -right[0];
right[1],fwd[1],up[1], basis2[1][m_indexRightAxis] = -right[1];
right[2],fwd[2],up[2] basis2[2][m_indexRightAxis] = -right[2];
);
basis2[0][m_indexUpAxis] = up[0];
basis2[1][m_indexUpAxis] = up[1];
basis2[2][m_indexUpAxis] = up[2];
basis2[0][m_indexForwardAxis] = fwd[0];
basis2[1][m_indexForwardAxis] = fwd[1];
basis2[2][m_indexForwardAxis] = fwd[2];
wheel.m_worldTransform.setBasis(steeringMat * rotatingMat * basis2); wheel.m_worldTransform.setBasis(steeringMat * rotatingMat * basis2);
wheel.m_worldTransform.setOrigin( wheel.m_worldTransform.setOrigin(
wheel.m_raycastInfo.m_hardPointWS + wheel.m_raycastInfo.m_wheelDirectionWS * wheel.m_raycastInfo.m_suspensionLength wheel.m_raycastInfo.m_hardPointWS + wheel.m_raycastInfo.m_wheelDirectionWS * wheel.m_raycastInfo.m_suspensionLength
@@ -567,7 +574,7 @@ void btRaycastVehicle::updateFriction(btScalar timeStep)
const btTransform& wheelTrans = getWheelTransformWS( i ); const btTransform& wheelTrans = getWheelTransformWS( i );
btMatrix3x3 wheelBasis0 = wheelTrans.getBasis(); btMatrix3x3 wheelBasis0 = wheelTrans.getBasis();
m_axle[i] = btVector3( m_axle[i] = -btVector3(
wheelBasis0[0][m_indexRightAxis], wheelBasis0[0][m_indexRightAxis],
wheelBasis0[1][m_indexRightAxis], wheelBasis0[1][m_indexRightAxis],
wheelBasis0[2][m_indexRightAxis]); wheelBasis0[2][m_indexRightAxis]);