Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions AttachWeights/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
cmake_minimum_required(VERSION 3.10)
project(AttachWeights)

set(CMAKE_CXX_COMPILER g++)
set(CMAKE_CXX_FLAGS "-O3 -Wall -fPIC")

# Detect OS
if(APPLE)
add_definitions(-DOSX)
set(TARGET_EXT Mac)
elseif(UNIX)
add_definitions(-DLINUX)
set(TARGET_EXT Linux)
endif()

include_directories(${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/Pinocchio)

link_directories(${CMAKE_BINARY_DIR}/Pinocchio)

set(BINARY_FILES
stdafx.cpp
AttachWeights.cpp
)

add_executable(AttachWeights ${BINARY_FILES})

target_link_libraries(AttachWeights
pinocchio
stdc++
)

target_link_libraries(AttachWeights
${CMAKE_BINARY_DIR}/Pinocchio/libpinocchio.a
stdc++
)
20 changes: 20 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.10)
project(PinocchioProject)

add_compile_options(-Wno-deprecated)

# Define directories
set(DIRS
Pinocchio
AttachWeights
DemoUI
PinocchioStatic
)

# Add subdirectories (analogous to `makePerDir`)
foreach(DIR ${DIRS})
add_subdirectory(${DIR})
endforeach()

# Optional: Add a custom clean target (though `make clean` is usually provided automatically)

28 changes: 28 additions & 0 deletions DemoUI/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
cmake_minimum_required(VERSION 3.10)
project(DemoUI)

set(CMAKE_CXX_COMPILER g++)
set(CMAKE_CXX_FLAGS "-Wall -O3")

include_directories(../Pinocchio)

link_directories(../Pinocchio)

set(SOURCE_FILES
demoUI.cpp
MyWindow.cpp
defmesh.cpp
processor.cpp
motion.cpp
filter.cpp
)

add_executable(DemoUI ${SOURCE_FILES})

target_link_libraries(DemoUI
pinocchio
OpenGL
fltk
fltk_gl
m
)
38 changes: 38 additions & 0 deletions Pinocchio/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
cmake_minimum_required(VERSION 3.10)
project(pinocchio)

set(CMAKE_CXX_COMPILER g++)
set(CMAKE_CXX_FLAGS "-O3 -Wall -fPIC")

set(SOURCE_FILES
attachment.cpp
discretization.cpp
indexer.cpp
lsqSolver.cpp
mesh.cpp
graphutils.cpp
intersector.cpp
matrix.cpp
skeleton.cpp
embedding.cpp
pinocchioApi.cpp
refinement.cpp
)

set(OBJECT_FILES
attachment.o
discretization.o
indexer.o
lsqSolver.o
mesh.o
graphutils.o
intersector.o
matrix.o
skeleton.o
embedding.o
pinocchioApi.o
refinement.o
)

add_library(pinocchio STATIC ${SOURCE_FILES})
target_link_libraries(pinocchio m)
2 changes: 1 addition & 1 deletion Pinocchio/quaddisttree.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class DistFunction : public Multilinear<double, Dim>
template<class Eval> void initFunc(const Eval &eval, const MyRect &rect)
{
for(int i = 0; i < (1 << Dim); ++i) {
setValue(i, eval(rect.getCorner(i)));
this->setValue(i, eval(rect.getCorner(i)));
}
return;
}
Expand Down
44 changes: 23 additions & 21 deletions Pinocchio/rect.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,6 @@ class RectOp
template<int D> friend class RectOp;
template<class R, int D> friend class Rect;

template<class R, int D>
static R distSq(const RRD &r, const VRD &v)
{
R out = Next::distSq(r, v);
if(r.getLo()[last] > v[last])
return out + SQR(r.getLo()[last] - v[last]);
if(r.getHi()[last] < v[last])
return out + SQR(v[last] - r.getHi()[last]);
return out;
}

template<class R, int D>
static R distSq(const RRD &r, const RRD &r2)
{
Expand All @@ -169,6 +158,18 @@ class RectOp
return out;
}

public:
template<class R, int D>
static R distSq(const RRD &r, const VRD &v)
{
R out = Next::distSq(r, v);
if(r.getLo()[last] > v[last])
return out + SQR(r.getLo()[last] - v[last]);
if(r.getHi()[last] < v[last])
return out + SQR(v[last] - r.getHi()[last]);
return out;
}

};

template <>
Expand All @@ -177,16 +178,6 @@ class RectOp<1>
private:
template<int D> friend class RectOp;

template<class R, int D>
static R distSq(const RRD &r, const VRD &v)
{
if(r.getLo()[0] > v[0])
return SQR(r.getLo()[0] - v[0]);
if(r.getHi()[0] < v[0])
return SQR(v[0] - r.getHi()[0]);
return R();
}

template<class R, int D>
static R distSq(const RRD &r, const RRD &r2)
{
Expand All @@ -197,6 +188,17 @@ class RectOp<1>
return R();
}

public:
template<class R, int D>
static R distSq(const RRD &r, const VRD &v)
{
if(r.getLo()[0] > v[0])
return SQR(r.getLo()[0] - v[0]);
if(r.getHi()[0] < v[0])
return SQR(v[0] - r.getHi()[0]);
return R();
}

};
} //namespace _RectPrivate

Expand Down
2 changes: 2 additions & 0 deletions Pinocchio/vector.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ class VecOp
typedef VecOp<Dim - 1> Next;
template<int D> friend class VecOp;
template<class R, int D> friend class Vector;
template <class R, int D> friend class ::Vector;

template<class R, class R1, int D>
static void assign(const VRD1 &from, VRD &to) { to[last] = from[last]; Next::assign(from, to); }
Expand Down Expand Up @@ -272,6 +273,7 @@ class VecOp<1>
{
private:
template<int D> friend class VecOp;
template <class R, int D> friend class ::Vector;

template<class R, class R1, int D> static void assign(const VRD1 &from, VRD &to) { to[0] = from[0]; }

Expand Down
80 changes: 80 additions & 0 deletions PinocchioStatic/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
project(PinocchioStatic)

# Gather all source files
set(PINOCCHIO_SRC
../Pinocchio/attachment.cpp
../Pinocchio/discretization.cpp
../Pinocchio/embedding.cpp
../Pinocchio/graphutils.cpp
../Pinocchio/indexer.cpp
../Pinocchio/intersector.cpp
../Pinocchio/lsqSolver.cpp
../Pinocchio/matrix.cpp
../Pinocchio/mesh.cpp
../Pinocchio/pinocchioApi.cpp
../Pinocchio/refinement.cpp
../Pinocchio/skeleton.cpp
)

# Gather all header files (optional but useful for IDEs)
set(PINOCCHIO_HEADERS
../Pinocchio/attachment.h
../Pinocchio/debugging.h
../Pinocchio/deriv.h
../Pinocchio/dtree.h
../Pinocchio/graphutils.h
../Pinocchio/hashutils.h
../Pinocchio/indexer.h
../Pinocchio/intersector.h
../Pinocchio/lsqSolver.h
../Pinocchio/mathutils.h
../Pinocchio/matrix.h
../Pinocchio/mesh.h
../Pinocchio/multilinear.h
../Pinocchio/Pinocchio.h
../Pinocchio/pinocchioApi.h
../Pinocchio/pointprojector.h
../Pinocchio/quaddisttree.h
../Pinocchio/rect.h
../Pinocchio/skeleton.h
../Pinocchio/transform.h
../Pinocchio/utils.h
../Pinocchio/vector.h
../Pinocchio/vecutils.h
)

# Define the static library
add_library(PinocchioStatic STATIC ${PINOCCHIO_SRC} ${PINOCCHIO_HEADERS})

# Include directories
target_include_directories(PinocchioStatic PUBLIC
${CMAKE_SOURCE_DIR}/Pinocchio
)

# Define preprocessor macros
target_compile_definitions(PinocchioStatic PRIVATE
_LIB
PINOCCHIO_STATIC
)

# Compiler options for debug and release
target_compile_options(PinocchioStatic PRIVATE
$<$<CONFIG:Debug>:/Od /Zi /RTC1> # Optimization off, debug info, runtime checks
$<$<CONFIG:Release>:/O2 /DNDEBUG> # Optimization on, no debug
)

if(CMAKE_BUILD_TYPE MATCHES Debug)
target_compile_definitions(PinocchioStatic PRIVATE _DEBUG)
target_compile_options(PinocchioStatic PRIVATE -g -O0 -Wall)
else()
target_compile_definitions(PinocchioStatic PRIVATE NDEBUG)
target_compile_options(PinocchioStatic PRIVATE -O2 -Wall)
endif()

# Set the runtime library (matches Visual Studio project: /MDd for Debug, /MD for Release)
# Use MSVC_RUNTIME_LIBRARY only with CMake 3.15+
if(MSVC)
set_property(TARGET PinocchioStatic PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()