Index: graphics/Makefile =================================================================== --- graphics/Makefile +++ graphics/Makefile @@ -378,6 +378,7 @@ SUBDIR += impressive SUBDIR += imv SUBDIR += inkscape + SUBDIR += instant-meshes SUBDIR += intel-backlight SUBDIR += intergif SUBDIR += inventor Index: graphics/instant-meshes/Makefile =================================================================== --- /dev/null +++ graphics/instant-meshes/Makefile @@ -0,0 +1,53 @@ +# $FreeBSD$ + +PORTNAME= instant-meshes +DISTVERSION= 0.0-42 +DISTVERSIONSUFFIX= -g4a083f4 +CATEGORIES= graphics + +MAINTAINER= greg@unrelenting.technology +COMMENT= Interactive field-aligned mesh generator + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +BUILD_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/eigen3.pc:math/eigen3 \ + convert:graphics/ImageMagick +LIB_DEPENDS= libglfw.so:graphics/glfw \ + libtbb.so:devel/tbb +RUN_DEPENDS= eigen>0:math/eigen3 \ + zenity:x11/zenity + +USES= cmake:outsource compiler:c++11-lang localbase:ldflags pkgconfig +USE_GITHUB= yes +GH_ACCOUNT= wjakob +GH_TUPLE= wjakob:nanogui:2a61f03:nanogui/ext/nanogui \ + wjakob:nanovg:ac15b84:nanovg/ext/nanogui/ext/nanovg \ + wjakob:dset:7967ef0:dset/ext/dset \ + wjakob:pcg32:0ef13e6:pcg32/ext/pcg32 \ + wjakob:pss:a91da33:pss/ext/pss # nanogui should be a port dependency, but current versions aren't compatible +USE_GL= gl +USE_XORG= x11 xcursor xi xinerama xrandr xxf86vm +CMAKE_ARGS= -DNANOGUI_BUILD_PYTHON:BOOL=OFF + +post-build: + @convert -verbose -resize 500x500 -gravity center -background none -extent 512x512 \ + ${WRKSRC}/resources/icon.png ${WRKDIR}/icon_512x512.png +.for size in 128x128 192x192 256x256 + @convert -verbose -resize ${size} ${WRKDIR}/icon_512x512.png ${WRKDIR}/icon_${size}.png +.endfor +.for size in 16x16 24x24 32x32 48x48 64x64 96x96 + @convert -verbose -resize ${size} ${WRKDIR}/icon_512x512.png -unsharp 0x6 ${WRKDIR}/icon_${size}.png +.endfor + +post-install: + @${RM} -r ${STAGEDIR}${PREFIX}/include ${STAGEDIR}${PREFIX}/lib +.for size in 16x16 24x24 32x32 48x48 64x64 96x96 128x128 192x192 256x256 512x512 + @${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/${size}/apps + ${INSTALL_DATA} ${WRKDIR}/icon_${size}.png \ + ${STAGEDIR}${PREFIX}/share/icons/hicolor/${size}/apps/${PORTNAME}.png +.endfor + ${INSTALL_PROGRAM} ${CONFIGURE_WRKSRC}/"Instant Meshes" ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.desktop ${STAGEDIR}${PREFIX}/share/applications/ + +.include Index: graphics/instant-meshes/distinfo =================================================================== --- /dev/null +++ graphics/instant-meshes/distinfo @@ -0,0 +1,17 @@ +TIMESTAMP = 1514447413 +SHA256 (wjakob-instant-meshes-0.0-42-g4a083f4_GH0.tar.gz) = 8fbde93e36a8f8007463b6a34c15b755e3bb9856944f63a61773708021396e10 +SIZE (wjakob-instant-meshes-0.0-42-g4a083f4_GH0.tar.gz) = 3001873 +SHA256 (wjakob-nanogui-2a61f03_GH0.tar.gz) = 449ec1c4510377a651de5357b18b7540f9cc4bbf2cac6b1b36d28ceff045a6b3 +SIZE (wjakob-nanogui-2a61f03_GH0.tar.gz) = 2420569 +SHA256 (wjakob-glfw-0ff30d6_GH0.tar.gz) = 31bd08bd1d8061a3f62ff970561994b6c90d2db7ab955134cef71ee0eda5d165 +SIZE (wjakob-glfw-0ff30d6_GH0.tar.gz) = 471108 +SHA256 (wjakob-nanovg-ac15b84_GH0.tar.gz) = b7971a9c4ae472c39190ed6b24d98622fec3ace0e744362fa8b540dba212a4ff +SIZE (wjakob-nanovg-ac15b84_GH0.tar.gz) = 2014793 +SHA256 (pybind-pybind11-c01a1c1_GH0.tar.gz) = 84cd4dc4c0b703a43d8d547c8ddadcf30d3c26e45e3a1565bd9d5ef5040fcf7d +SIZE (pybind-pybind11-c01a1c1_GH0.tar.gz) = 360503 +SHA256 (wjakob-pcg32-0ef13e6_GH0.tar.gz) = 4043b476e24158b5fc157428f2c09eea342a8f03e77fa9d57609e220e8605b9e +SIZE (wjakob-pcg32-0ef13e6_GH0.tar.gz) = 5320 +SHA256 (wjakob-dset-7967ef0_GH0.tar.gz) = 5f9361a6760b327cacbe77e9260bc3b121c35ff740c61d235aff7079efaa4423 +SIZE (wjakob-dset-7967ef0_GH0.tar.gz) = 2492 +SHA256 (wjakob-pss-a91da33_GH0.tar.gz) = e2dc7fd87c44971ea53d0c7436daa70ae3caba77facff7b5554fdb5a3d67c1b5 +SIZE (wjakob-pss-a91da33_GH0.tar.gz) = 3476 Index: graphics/instant-meshes/files/instant-meshes.desktop =================================================================== --- /dev/null +++ graphics/instant-meshes/files/instant-meshes.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Instant Meshes +GenericName=An interactive field-aligned mesh generator +Comment=An interactive field-aligned mesh generator +Icon=instant-meshes +# radeonsi_dri crash with DRI3 +#Exec=env LIBGL_DRI3_DISABLE=1 "Instant Meshes" +Exec=sh -c "LIBGL_DRI3_DISABLE=1 instant-meshes" +Categories=Graphics;3DGraphics; +StartupNotify=true Index: graphics/instant-meshes/files/patch-CMakeLists.txt =================================================================== --- /dev/null +++ graphics/instant-meshes/files/patch-CMakeLists.txt @@ -0,0 +1,48 @@ +--- CMakeLists.txt.orig 2017-09-06 16:18:14 UTC ++++ CMakeLists.txt +@@ -11,11 +11,11 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CO + endif() + string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE) + +-if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ext/nanogui/ext/glfw") +- message(FATAL_ERROR "The Instant Meshes dependency repositories (NanoGUI, GLFW, etc.) are missing! " +- "You probably did not clone the project with --recursive. It is possible to recover " +- "by calling \"git submodule update --init --recursive\"") +-endif() ++#if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ext/nanogui/ext/glfw") ++# message(FATAL_ERROR "The Instant Meshes dependency repositories (NanoGUI, GLFW, etc.) are missing! " ++# "You probably did not clone the project with --recursive. It is possible to recover " ++# "by calling \"git submodule update --init --recursive\"") ++#endif() + + # Enable folders for projects in Visual Studio + if (CMAKE_GENERATOR MATCHES "Visual Studio") +@@ -66,7 +66,7 @@ set(NANOGUI_BUILD_EXAMPLE OFF CACHE BOOL + set(NANOGUI_BUILD_SHARED OFF CACHE BOOL " " FORCE) + set(NANOGUI_BUILD_PYTHON OFF CACHE BOOL " " FORCE) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ext/nanogui ext_build/nanogui) +-set_property(TARGET nanogui glfw glfw_objects bin2c PROPERTY FOLDER "dependencies") ++set_property(TARGET nanogui bin2c PROPERTY FOLDER "dependencies") + + # Build TBB + set(TBB_BUILD_STATIC ON CACHE BOOL " " FORCE) +@@ -75,8 +75,8 @@ set(TBB_BUILD_TBBMALLOC OFF CACHE BOOL " + set(TBB_BUILD_TBBMALLOC_PROXY OFF CACHE BOOL " " FORCE) + set(TBB_BUILD_TESTS OFF CACHE BOOL " " FORCE) + +-add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ext/tbb ext_build/tbb) +-set_property(TARGET tbb_static tbb_def_files PROPERTY FOLDER "dependencies") ++#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ext/tbb ext_build/tbb) ++#set_property(TARGET tbb_static tbb_def_files PROPERTY FOLDER "dependencies") + + # Compile instant meshes with various compiler warnings turned on + if(MSVC) +@@ -173,7 +173,7 @@ add_executable(InstantMeshes MACOSX_BUND + ${EXTRA_SOURCE}) + + add_definitions(${NANOGUI_EXTRA_DEFS}) +-target_link_libraries(InstantMeshes tbb_static nanogui ${NANOGUI_EXTRA_LIBS}) ++target_link_libraries(InstantMeshes tbb nanogui ${NANOGUI_EXTRA_LIBS}) + + set_target_properties(InstantMeshes PROPERTIES OUTPUT_NAME "Instant Meshes") + Index: graphics/instant-meshes/files/patch-ext_nanogui_CMakeLists.txt =================================================================== --- /dev/null +++ graphics/instant-meshes/files/patch-ext_nanogui_CMakeLists.txt @@ -0,0 +1,76 @@ +--- ext/nanogui/CMakeLists.txt.orig 2016-10-15 20:12:12 UTC ++++ ext/nanogui/CMakeLists.txt +@@ -6,12 +6,6 @@ if (POLICY CMP0058) + cmake_policy(SET CMP0058 NEW) + endif() + +-if (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw/src") +- message(FATAL_ERROR "The NanoGUI dependency repositories (GLFW, etc.) are missing! " +- "You probably did not clone the project with --recursive. It is possible to recover " +- "by calling \"git submodule update --init --recursive\"") +-endif() +- + if (WIN32) + set(NANOGUI_USE_GLAD_DEFAULT ON) + else() +@@ -61,9 +55,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations") + endif() + +-# Compile GLFW +-add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw" "ext_build/glfw") +- + # Python support: add NANOGUI_PYTHON flag to all targets + if (NANOGUI_BUILD_PYTHON) + list(APPEND NANOGUI_EXTRA_DEFS -DNANOGUI_PYTHON) +@@ -174,13 +165,6 @@ if (NANOGUI_BUILD_SHARED) + endif() + endif() + +-# Always use libc++ on Clang +-if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi") +- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++ -lc++abi") +-endif() +- + if (NANOGUI_USE_GLAD) + # Build and include GLAD on Windows + list(APPEND LIBNANOGUI_EXTRA_SOURCE +@@ -197,12 +181,12 @@ if (NANOGUI_USE_GLAD) + endif() + + list(APPEND NANOGUI_EXTRA_INCS +- "${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw/include" ++ "${CMAKE_INSTALL_PREFIX}/include/GLFW" + "${CMAKE_CURRENT_SOURCE_DIR}/ext/nanovg/src" + ) + + if (NOT NANOGUI_EIGEN_INCLUDE_DIR) +- set(NANOGUI_EIGEN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ext/eigen") ++ set(NANOGUI_EIGEN_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include/eigen3") + list(APPEND NANOGUI_EXTRA_INCS "${NANOGUI_EIGEN_INCLUDE_DIR}") + endif() + +@@ -226,9 +210,12 @@ elseif(CMAKE_SYSTEM MATCHES "Linux" OR C + if(CMAKE_SYSTEM MATCHES "Linux") + list(APPEND NANOGUI_EXTRA_LIBS dl) + endif() ++ if(CMAKE_SYSTEM MATCHES "FreeBSD") ++ list(APPEND NANOGUI_EXTRA_LIBS glfw) ++ endif() + endif() + +-include_directories(${NANOGUI_EIGEN_INCLUDE_DIR} ext/glfw/include ext/nanovg/src include ${CMAKE_CURRENT_BINARY_DIR}) ++include_directories(${NANOGUI_EIGEN_INCLUDE_DIR} ext/nanovg/src include ${CMAKE_CURRENT_BINARY_DIR}) + + # Run simple C converter to put font files into the data segment + add_executable(bin2c resources/bin2c.c) +@@ -311,7 +298,6 @@ add_library(nanogui-obj OBJECT + + add_library(nanogui ${NANOGUI_LIBRARY_TYPE} + $ +- $ + ) + + if (${NANOGUI_LIBRARY_TYPE} MATCHES "SHARED") Index: graphics/instant-meshes/files/patch-ext_nanogui_src_common.cpp =================================================================== --- /dev/null +++ graphics/instant-meshes/files/patch-ext_nanogui_src_common.cpp @@ -0,0 +1,11 @@ +--- ext/nanogui/src/common.cpp.orig 2016-10-15 20:12:12 UTC ++++ ext/nanogui/src/common.cpp +@@ -248,7 +248,7 @@ std::string file_dialog(const std::vecto + return std::string(ofn.lpstrFile); + #else + char buffer[FILE_DIALOG_MAX_BUFFER]; +- std::string cmd = "/usr/bin/zenity --file-selection "; ++ std::string cmd = "zenity --file-selection "; + if (save) + cmd += "--save "; + cmd += "--file-filter=\""; Index: graphics/instant-meshes/pkg-descr =================================================================== --- /dev/null +++ graphics/instant-meshes/pkg-descr @@ -0,0 +1,11 @@ +Interactive 3D mesh retopology software developed as part of the publication +"Instant Field-Aligned Meshes", ACM Transactions on Graphics (Proceedings of +SIGGRAPH Asia, 2015). + +The application implements a novel approach to remesh a surface into an +isotropic triangular or quad-dominant mesh using a unified local smoothing +operator that optimizes both the edge orientations and vertex positions in +the output mesh. The algorithm produces meshes with high isotropy while +naturally aligning and snapping edges to sharp features. + +WWW: https://igl.ethz.ch/projects/instant-meshes Index: graphics/instant-meshes/pkg-message =================================================================== --- /dev/null +++ graphics/instant-meshes/pkg-message @@ -0,0 +1,8 @@ +====================================================================== +You installed instant-meshes: interactive field-aligned mesh generator + +You can also download and unzip 'Datasets' using the link on this site: +https://github.com/wjakob/instant-meshes + +You can open these datasets (*.ply files) in the application. +====================================================================== Index: graphics/instant-meshes/pkg-plist =================================================================== --- /dev/null +++ graphics/instant-meshes/pkg-plist @@ -0,0 +1,12 @@ +bin/instant-meshes +share/applications/instant-meshes.desktop +share/icons/hicolor/128x128/apps/instant-meshes.png +share/icons/hicolor/16x16/apps/instant-meshes.png +share/icons/hicolor/192x192/apps/instant-meshes.png +share/icons/hicolor/24x24/apps/instant-meshes.png +share/icons/hicolor/256x256/apps/instant-meshes.png +share/icons/hicolor/32x32/apps/instant-meshes.png +share/icons/hicolor/48x48/apps/instant-meshes.png +share/icons/hicolor/512x512/apps/instant-meshes.png +share/icons/hicolor/64x64/apps/instant-meshes.png +share/icons/hicolor/96x96/apps/instant-meshes.png