diff -Nru mm3d-1.3.13/ChangeLog mm3d-1.3.14/ChangeLog
--- mm3d-1.3.13/ChangeLog 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/ChangeLog 2023-04-23 07:02:24.000000000 +0000
@@ -1,8 +1,35 @@
Maverick Model 3D releases published by Zack Middleton.
+Changes for 1.3.14 (2023-04-23)
+ General
+ Enable Qt HiDPI support by default and fix a few layout issues
+ Add Offset by Normal command to move vertex along averge normal
+ Make Duplicate command keep all joint influences
+ Make Edge Divide command set group and texture coords
+ Make Select Vertex tool automatically select and unselect triangles
+ Select new face made by Make Face From Vertices
+ Make texture coord window to reset map scheme on selection change
+ Fix texture coord window displaying last texture if no triangle has a texture
+ Merge Model / Import Animations
+ Add support for frame animations to Import Animations
+ Make Merge Model copy frame animation FPS
+ Make Merge Model and Import Animations copy looping setting
+ Fix Merge Model and Import Animations to set skeletal animation FPS on the correct animation
+ Background Image
+ Fix model using background image with Canvas mode Flat
+ Fix model viewports not updating immediately after setting background image
+ Fix drawing left/right brackground image in some cases
+ Fix background image not blending in some cases
+ Model Formats
+ cal3d
+ Add support for exporting cal3d .cfg files
+ mm3d
+ Fix writing background image filename
+ GNU/Linux
+ Update Flatpak runtime to org.kde.Platform 5.15-22.08
+
Changes for 1.3.13 (2021-12-20)
General
- Add GameMaker Studio .d3d model import/export
Add Clear Rotation/Translation Keyframes to Animation menu
Add Base Point to Model Merge
Add filename to Plugins window
@@ -12,7 +39,7 @@
Make copy/paste skeleton animation frame copy interpolated keyframes
Make paste animation frame select what was paste
Make new animations default to non-looping
- Switch from QGLWidget to QOpenGLWidget (needed for Wayland on Linux, breaks Windows with OpenGL 1.1)
+ Switch from QGLWidget to QOpenGLWidget (needed for Wayland on GNU/Linux, breaks Windows with OpenGL 1.1)
Generate HTML manual using C instead of Perl with HTML::Template module
Fix merged points in frame animations
Fix crash if merging model when existing has a 0-frame animation
@@ -26,6 +53,8 @@
Fix Qt translations (qt_xx.qm) not being used
Fix hundreds of compiler warnings
Model Formats
+ d3d (new)
+ Add GameMaker Studio .d3d model import/export
iqe
Remove option to disable saving points in animations (IQM SDK would use identity, not bind pose)
md2
@@ -42,12 +71,12 @@
obj
Fix crash if some MTL keywords are before newmtl
Fix crash for out of bounds texcoord index
- Linux
+ GNU/Linux
Add AppStream metadata and install icons into modern file path
Add ability to build as a Flatpak
Don't create 'shared' plugins symlink anymore (to allow multiple install paths)
Rename mimetype from application/x-mm3d to model/x-mm3d
- Fix locating Qt translations on Linux
+ Fix locating Qt translations on GNU/Linux
Windows
Support UTF-16 paths for install path and appdata on Windows
Make building using MinGW on Debian use POSIX thread model so it uses the same GCC run-time as Qt
@@ -56,7 +85,7 @@
macOS
Add system and Qt translations to macOS AppBundle
Add `make appbundle` to Makefile.generic
- Add support for cross-compiling from Linux using osxcross
+ Add support for cross-compiling from GNU/Linux using osxcross
Renamed macOS configure `make mm3d.app` target to `make appbundle`
Build Note
Moved autosetup.sh to autogen.sh to match defacto naming convention
diff -Nru mm3d-1.3.13/configure.ac mm3d-1.3.14/configure.ac
--- mm3d-1.3.13/configure.ac 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/configure.ac 2023-04-23 07:02:24.000000000 +0000
@@ -9,8 +9,8 @@
dnl Makefile.am (for Contents/PlugIns/mm3d/x.x)
dnl plugins/Makefile.am (for plugins/x.x)
-AC_INIT([mm3d], [1.3.13])
-AM_INIT_AUTOMAKE
+AC_INIT([mm3d], [1.3.14])
+AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADERS([config.h])
diff -Nru mm3d-1.3.13/debian/changelog mm3d-1.3.14/debian/changelog
--- mm3d-1.3.13/debian/changelog 2021-12-22 04:30:37.000000000 +0000
+++ mm3d-1.3.14/debian/changelog 2023-06-12 07:51:11.000000000 +0000
@@ -1,3 +1,18 @@
+mm3d (1.3.14-2) unstable; urgency=medium
+
+ * Upload to unstable.
+ * d/control: rename Recommends to Suggests.
+
+ -- Gürkan Myczko Mon, 12 Jun 2023 09:51:11 +0200
+
+mm3d (1.3.14-1) experimental; urgency=medium
+
+ * New upstream version.
+ * Bump standards version to 4.6.2.
+ * d/copyright: bump years.
+
+ -- Gürkan Myczko Sun, 23 Apr 2023 14:26:21 +0200
+
mm3d (1.3.13-1) unstable; urgency=medium
* New upstream version.
diff -Nru mm3d-1.3.13/debian/control mm3d-1.3.14/debian/control
--- mm3d-1.3.13/debian/control 2021-12-22 04:30:37.000000000 +0000
+++ mm3d-1.3.14/debian/control 2023-06-12 07:51:11.000000000 +0000
@@ -3,8 +3,16 @@
Priority: optional
Maintainer: Debian Multimedia Maintainers
Uploaders: Gürkan Myczko
-Build-Depends: debhelper-compat (= 13), qtchooser, qtbase5-dev, qt5-qmake, libqt5opengl5-desktop-dev, pkg-config, libhtml-template-perl, qttools5-dev-tools
-Standards-Version: 4.6.0
+Build-Depends:
+ debhelper-compat (= 13),
+ qtchooser,
+ qtbase5-dev,
+ qt5-qmake,
+ libqt5opengl5-desktop-dev,
+ pkg-config,
+ libhtml-template-perl,
+ qttools5-dev-tools
+Standards-Version: 4.6.2
Rules-Requires-Root: no
Vcs-Git: https://salsa.debian.org/multimedia-team/mm3d.git
Vcs-Browser: https://salsa.debian.org/multimedia-team/mm3d
@@ -13,7 +21,7 @@
Package: mm3d
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
-Recommends: blender, yafray, wings3d
+Suggests: blender, yafray, wings3d
Description: OpenGL based 3D model editor
This is an OpenGL based 3D model editor that works with triangle-based
models. It supports multi-level undo, skeletal animations, simple texturing,
diff -Nru mm3d-1.3.13/debian/copyright mm3d-1.3.14/debian/copyright
--- mm3d-1.3.13/debian/copyright 2021-12-22 04:30:37.000000000 +0000
+++ mm3d-1.3.14/debian/copyright 2023-04-23 12:27:28.000000000 +0000
@@ -8,7 +8,7 @@
Johannes Kroll (Texture reload, Snap Together commands)
Ainsley Preira (various bug fixes, feature enhancements)
Russel Valentine (initial MD3 filter)
- 2008-2021 Zack Middleton
+ 2008-2023 Zack Middleton
License: GPL-2-or-later
License: GPL-2-or-later
@@ -30,5 +30,5 @@
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
Files: debian/*
-Copyright: 2007-2008,2018-2021 Gürkan Myczko
+Copyright: 2007-2008,2018-2023 Gürkan Myczko
License: GPL-2-or-later
diff -Nru mm3d-1.3.13/desktop/moe.clover.mm3d.metainfo.xml mm3d-1.3.14/desktop/moe.clover.mm3d.metainfo.xml
--- mm3d-1.3.13/desktop/moe.clover.mm3d.metainfo.xml 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/desktop/moe.clover.mm3d.metainfo.xml 2023-04-23 07:02:24.000000000 +0000
@@ -37,6 +37,7 @@
mm3d
+
diff -Nru mm3d-1.3.13/doc/html/Makefile.am mm3d-1.3.14/doc/html/Makefile.am
--- mm3d-1.3.13/doc/html/Makefile.am 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/doc/html/Makefile.am 2023-04-23 07:02:24.000000000 +0000
@@ -42,6 +42,7 @@
olh_iqeprompt.htm \
olh_quakemd3prompt.htm \
olh_smdprompt.htm \
+ olh_offsetwin.htm \
olh_painttexturewin.htm \
olh_pointwin.htm \
olh_pluginwin.htm \
@@ -100,6 +101,7 @@
olh_iqeprompt.html \
olh_quakemd3prompt.html \
olh_smdprompt.html \
+ olh_offsetwin.html \
olh_painttexturewin.html \
olh_pointwin.html \
olh_pluginwin.html \
diff -Nru mm3d-1.3.13/doc/html/olh_commands.htm mm3d-1.3.14/doc/html/olh_commands.htm
--- mm3d-1.3.13/doc/html/olh_commands.htm 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/doc/html/olh_commands.htm 2023-04-23 07:02:24.000000000 +0000
@@ -12,6 +12,7 @@
Snap Vertices Together
Make Face From Vertices
Select Free Vertices
+ Offset by Normal
@@ -211,6 +212,22 @@
+ Offset by Normal
+
+ Overview
+
+ Offset by Normal opens a window to interactively move the
+ selected vertices along the vertex normal. This only affects
+ vertices that are connected to a triangle. See the
+ Offset by Normal Window for details.
+
+
+ Keyboard shortcuts
diff -Nru mm3d-1.3.13/doc/html/olh_index.htm mm3d-1.3.14/doc/html/olh_index.htm
--- mm3d-1.3.13/doc/html/olh_index.htm 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/doc/html/olh_index.htm 2023-04-23 07:02:24.000000000 +0000
@@ -93,6 +93,7 @@
Snap Vertices Together
Make Face From Vertices
Select Free Vertices
+ Offset by Normal
diff -Nru mm3d-1.3.13/doc/html/olh_offsetwin.htm mm3d-1.3.14/doc/html/olh_offsetwin.htm
--- mm3d-1.3.13/doc/html/olh_offsetwin.htm 1970-01-01 00:00:00.000000000 +0000
+++ mm3d-1.3.14/doc/html/olh_offsetwin.htm 2023-04-23 07:02:24.000000000 +0000
@@ -0,0 +1,38 @@
+ Offset by Normal Window
+
+
+ The Offset by Normal Window is used to interactively move the
+ selected vertices along the vertex normal. This only affects
+ vertices that are connected to a triangle.
+ It is made up of a text entry box for the max distance with a slider
+ and a text entry box for the percent value.
+
+
+
+ The vertex normal is the averaged direction of connected triangles.
+ It is not affected by the group smoothing and max angle.
+
+
+
+ The offset to move the selected vertexes is calculated by the
+ max distance scaled by the percent value. The percent value slider
+ allows for better interactivity.
+
+
+
+ The max distance is the value to move when the slider is set to 100%.
+
+
+
+ The percent value ranges from -100 to 100 and starts at 0.
+ A value of zero is the starting shape of the selected
+ mesh.
+ You can drag the slider left to decrease the value, or drag it right to
+ increase the value. You can also change the value by typing a new
+ value into the text box next to the slider.
+
+
+
+ Press Ok to keep your changes or press Cancel
+ to ignore any changes.
+
diff -Nru mm3d-1.3.13/doc/html/olh_offsetwin.page mm3d-1.3.14/doc/html/olh_offsetwin.page
--- mm3d-1.3.13/doc/html/olh_offsetwin.page 1970-01-01 00:00:00.000000000 +0000
+++ mm3d-1.3.14/doc/html/olh_offsetwin.page 2023-04-23 07:02:24.000000000 +0000
@@ -0,0 +1,2 @@
+PAGE_TITLE=Offset by Normal Window
+PAGE_CONTENT=
-Copyright © 2015-2021, Zack Middleton
+Copyright © 2015-2023, Zack Middleton
diff -Nru mm3d-1.3.13/.github/workflows/build.yml mm3d-1.3.14/.github/workflows/build.yml
--- mm3d-1.3.13/.github/workflows/build.yml 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/.github/workflows/build.yml 2023-04-23 07:02:24.000000000 +0000
@@ -56,7 +56,10 @@
linux-flatpak:
name: Flatpak (Linux, GCC)
- runs-on: ubuntu-latest
+ # flatpak-builder fails to download glu on ubuntu-22.04
+ # (glu specified in mm3d-flatpak.yml)
+ # see https://github.com/flatpak/flatpak-builder/issues/468
+ runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
@@ -66,7 +69,6 @@
sudo apt update
sudo apt install flatpak flatpak-builder
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- flatpak install --user -y org.kde.Platform//5.15 flathub org.kde.Sdk//5.15
- name: Set version for the Flatpak
run: |
# if not a tag, add version
@@ -75,7 +77,7 @@
fi
cat desktop/moe.clover.mm3d.metainfo.xml
- name: flatpak-builder
- run: flatpak-builder --repo=flatpak-repo --state-dir=flatpak-state flatpak-build mm3d-flatpak.yaml
+ run: flatpak-builder --user --install-deps-from=flathub --repo=flatpak-repo --state-dir=flatpak-state flatpak-build mm3d-flatpak.yaml
- name: flatpak build-bundle
run: flatpak build-bundle flatpak-repo moe.clover.mm3d-$(git describe|sed 's/^v\([0-9]\)/\1/').flatpak moe.clover.mm3d
- name: flatpak install
diff -Nru mm3d-1.3.13/Makefile.generic mm3d-1.3.14/Makefile.generic
--- mm3d-1.3.13/Makefile.generic 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/Makefile.generic 2023-04-23 07:02:24.000000000 +0000
@@ -519,6 +519,7 @@
${B}/qtui/ms3dprompt.base.h \
${B}/qtui/objprompt.base.h \
${B}/qtui/smdprompt.base.h \
+ ${B}/qtui/offsetwin.base.h \
${B}/qtui/pluginwin.base.h \
${B}/qtui/statusbar.base.h \
${B}/qtui/texturecoord.base.h \
@@ -575,6 +576,7 @@
${B}/implui/ms3dprompt.moc.cc \
${B}/implui/objprompt.moc.cc \
${B}/implui/smdprompt.moc.cc \
+ ${B}/implui/offsetwin.moc.cc \
${B}/implui/pluginwin.moc.cc \
${B}/tools/polytoolwidget.moc.cc \
${B}/tools/projtoolwidget.moc.cc \
@@ -642,6 +644,7 @@
${B}/implui/ms3dprompt.moc.o \
${B}/implui/objprompt.moc.o \
${B}/implui/smdprompt.moc.o \
+ ${B}/implui/offsetwin.moc.o \
${B}/implui/pluginwin.moc.o \
${B}/tools/polytoolwidget.moc.o \
${B}/tools/projtoolwidget.moc.o \
@@ -752,6 +755,8 @@
${B}/implui/objprompt.o \
${B}/implui/smdprompt.o \
${B}/implui/pluginwin.o \
+ ${B}/commands/offsetcmd.o \
+ ${B}/implui/offsetwin.o \
${B}/tools/polytool.o \
${B}/tools/polytoolwidget.o \
${B}/tools/projtoolwidget.o \
@@ -862,6 +867,7 @@
${B}/doc/html/olh_iqeprompt.html \
${B}/doc/html/olh_quakemd3prompt.html \
${B}/doc/html/olh_smdprompt.html \
+ ${B}/doc/html/olh_offsetwin.html \
${B}/doc/html/olh_painttexturewin.html \
${B}/doc/html/olh_pointwin.html \
${B}/doc/html/olh_pluginwin.html \
@@ -1174,11 +1180,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
-1.3.13
+1.3.14
CFBundleSignature
????
CFBundleVersion
-1.3.13
+1.3.14
CGDisableCoalescedUpdates
LSMinimumSystemVersion
diff -Nru mm3d-1.3.13/mm3d-flatpak.yaml mm3d-1.3.14/mm3d-flatpak.yaml
--- mm3d-1.3.13/mm3d-flatpak.yaml 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/mm3d-flatpak.yaml 2023-04-23 07:02:24.000000000 +0000
@@ -1,9 +1,13 @@
#
# Flatpak manifest
#
+# For building the flatpak, first ensure flathub repo is added for installing the KDE runtime.
+#
+# flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+#
# To build and install the Flatpak (requires flatpak and flatpak-builder programs):
#
-# flatpak-builder --user --install --force-clean --state-dir=flatpak-state flatpak-build mm3d-flatpak.yaml
+# flatpak-builder --user --install --install-deps-from=flathub --force-clean --state-dir=flatpak-state flatpak-build mm3d-flatpak.yaml
#
# After it's installed you can remove "flatpak-state" and "flatpak-build" directories.
#
@@ -13,10 +17,23 @@
#
# flatpak uninstall --user moe.clover.mm3d
#
+#
+# Releases are built labeled as "stable" branch using the following:
+#
+# flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+# flatpak-builder --default-branch=stable --user --install-deps-from=flathub --force-clean --repo=flatpak-repo --state-dir=flatpak-state flatpak-build mm3d-flatpak.yaml
+# flatpak build-bundle flatpak-repo moe.clover.mm3d-$(git describe|sed 's/^v\([0-9]\)/\1/').flatpak moe.clover.mm3d stable
+#
+# The release can be installed using:
+#
+# flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+# flatpak install --user -y moe.clover.mm3d-*.flatpak
+#
+#
app-id: moe.clover.mm3d
runtime: org.kde.Platform
-runtime-version: '5.15'
+runtime-version: '5.15-22.08'
sdk: org.kde.Sdk
command: mm3d
finish-args:
@@ -36,8 +53,8 @@
- "--disable-static"
sources:
- type: archive
- url: https://mesa.freedesktop.org/archive/glu/glu-9.0.1.tar.xz
- sha256: fb5a4c2dd6ba6d1c21ab7c05129b0769544e1d68e1e3b0ffecb18e73c93055bc
+ url: https://mesa.freedesktop.org/archive/glu/glu-9.0.2.tar.xz
+ sha256: 6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4
cleanup:
- "/include"
- "/lib/*.a"
diff -Nru mm3d-1.3.13/mm3d-win32-installer.nsi mm3d-1.3.14/mm3d-win32-installer.nsi
--- mm3d-1.3.13/mm3d-win32-installer.nsi 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/mm3d-win32-installer.nsi 2023-04-23 07:02:24.000000000 +0000
@@ -20,8 +20,8 @@
; See the COPYING file for full license text.
-!define VERSION "1.3.13"
-!define FILE_VERSION "1_3_13"
+!define VERSION "1.3.14"
+!define FILE_VERSION "1_3_14"
Name "Maverick Model 3D ${VERSION}"
OutFile "mm3d-${FILE_VERSION}-win32-installer.exe"
diff -Nru mm3d-1.3.13/README mm3d-1.3.14/README
--- mm3d-1.3.13/README 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/README 1970-01-01 00:00:00.000000000 +0000
@@ -1,73 +0,0 @@
-This is the README file for Maverick Model 3D
-
-Maverick Model 3D is a 3D model editor. It was written and tested on Linux.
-It is reported to run on other Unix-like operating systems. It also runs
-on Windows. See INSTALL.WIN32 for Windows-specific instructions.
-
-It is based on Misfit Model 3D that was developed by Kevin Worcester from 2004
-to 2009. Maverick Model 3D is maintained by Zack Middleton (zturtleman).
-
-The home page is here:
- https://clover.moe/mm3d
-
-The original project's home page is here:
- http://www.misfitcode.com/misfitmodel3d/
-
-Maverick Model 3D requires Qt (5.x) and OpenGL support. See the INSTALL file
-for details on where to get these packages.
-
-This program uses autoconf and automake for building from source. What this
-means is that if you are lucky you can install this program with these
-easy steps:
-
- ./autogen.sh
- ./configure
- make
- sudo make install
-
-This will build a 'mm3d' executable and install it in /usr/local/bin.
-Documentation will be in /usr/local/share/doc/mm3d.
-
-For more detailed installation instructions, see the INSTALL file.
-See INSTALL.WIN32 for Windows-specific instructions.
-
-## Debian/Ubuntu
-
-Build dependencies:
-
- sudo apt install autoconf automake make gcc g++ qtbase5-dev qtbase5-dev-tools qttools5-dev-tools libgl1-mesa-dev
-
-qttranslations5-l10n can be used at run-time.
-
-## Fedora
-
-Build dependencies:
-
- sudo dnf install autoconf automake make gcc gcc-c++ qt5-qtbase-devel qt5-linguist mesa-libGLU-devel
-
-qt5-qttranslations can be used at run-time.
-
-## Arch Linux
-
-Build dependencies:
-
- sudo pacman -S autoconf automake make gcc qt5-base qt5-tools glu
-
-qt5-translations can be used at run-time.
-
-## macOS
-
-To build a "Maverick Model 3D.app" AppBundle on macOS 10.14+,
-install homebrew from http://brew.sh and run the following commands.
-
-(I haven't tested these build steps as my MacBook Pro is limited to
-macOS 10.11 and Qt 5.12+ no longer supports it.)
-
- brew install autoconf automake qt@5
- ./autogen.sh
- ./configure --with-Qt-dir=/usr/local/Cellar/qt/5.15.2 --with-macosx-version-min=10.13
- make
- make appbundle
-
---with-macosx-version-min should be set to the value in
-/usr/local/Cellar/qt/5.15.2/mkspecs/macx-clang/qmake.conf
diff -Nru mm3d-1.3.13/README.md mm3d-1.3.14/README.md
--- mm3d-1.3.13/README.md 1970-01-01 00:00:00.000000000 +0000
+++ mm3d-1.3.14/README.md 2023-04-23 07:02:24.000000000 +0000
@@ -0,0 +1,72 @@
+Maverick Model 3D
+-----------------
+
+Maverick Model 3D is a 3D model editor. It was written and tested on Linux.
+It is reported to run on other Unix-like operating systems. It also runs
+on Windows.
+
+It is based on [Misfit Model 3D](http://www.misfitcode.com/misfitmodel3d/)
+that was developed by Kevin Worcester from 2004 to 2009. Maverick Model 3D
+is maintained by Zack Middleton (zturtleman).
+
+The home page is here:
+ https://clover.moe/mm3d
+
+Maverick Model 3D requires Qt (5.x) and OpenGL support. See the INSTALL file
+for details on where to get these packages.
+
+This program uses autoconf and automake for building from source. What this
+means is that if you are lucky you can install this program with these
+easy steps:
+
+ ./autogen.sh
+ ./configure
+ make
+ sudo make install
+
+This will build a 'mm3d' executable and install it in /usr/local/bin.
+Documentation will be in /usr/local/share/doc/mm3d.
+
+For more detailed installation instructions, see the INSTALL file.
+See INSTALL.WIN32 for Windows-specific instructions.
+
+## Debian/Ubuntu
+
+Build dependencies:
+
+ sudo apt install autoconf automake make gcc g++ qtbase5-dev qtbase5-dev-tools qttools5-dev-tools libgl1-mesa-dev
+
+qttranslations5-l10n can be used at run-time.
+
+## Fedora
+
+Build dependencies:
+
+ sudo dnf install autoconf automake make gcc gcc-c++ qt5-qtbase-devel qt5-linguist mesa-libGLU-devel
+
+qt5-qttranslations can be used at run-time.
+
+## Arch Linux
+
+Build dependencies:
+
+ sudo pacman -S autoconf automake make gcc qt5-base qt5-tools glu
+
+qt5-translations can be used at run-time.
+
+## macOS
+
+To build a "Maverick Model 3D.app" AppBundle on macOS 10.14+,
+install homebrew from http://brew.sh and run the following commands.
+
+(I haven't tested these build steps as my MacBook Pro is limited to
+macOS 10.11 and Qt 5.12+ no longer supports it.)
+
+ brew install autoconf automake qt@5
+ ./autogen.sh
+ ./configure --with-Qt-dir=/usr/local/Cellar/qt/5.15.2 --with-macosx-version-min=10.13
+ make
+ make appbundle
+
+--with-macosx-version-min should be set to the value in
+/usr/local/Cellar/qt/5.15.2/mkspecs/macx-clang/qmake.conf
diff -Nru mm3d-1.3.13/src/commands/dupcmd.cc mm3d-1.3.14/src/commands/dupcmd.cc
--- mm3d-1.3.13/src/commands/dupcmd.cc 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/commands/dupcmd.cc 2023-04-23 07:02:24.000000000 +0000
@@ -64,6 +64,38 @@
list::iterator lit;
+ if ( !joints.empty() )
+ {
+ // Duplicated joints
+ log_debug( "Duplicating %" PORTuSIZE " joints\n", joints.size() );
+ for ( lit = joints.begin(); lit != joints.end(); lit++ )
+ {
+ int parent = model->getBoneJointParent( *lit );
+
+ // TODO this will not work if parent joint comes after child
+ // joint. That shouldn't happen... but...
+ if ( model->isBoneJointSelected( parent ) )
+ {
+ parent = jointMap[ parent ];
+ }
+
+ // If joint is root joint, assign duplicated joint to be child
+ // of original
+ if ( parent == -1 )
+ {
+ parent = 0;
+ }
+
+ double coord[3];
+ double rot[3] = { 0, 0, 0 };
+ model->getBoneJointCoords( *lit, coord );
+
+ int nj = model->addBoneJoint( model->getBoneJointName( *lit ),
+ coord[0], coord[1], coord[2], rot[0], rot[1], rot[2], parent );
+ jointMap[ *lit ] = nj;
+ }
+ }
+
if ( !tri.empty() )
{
model_status( model, StatusNormal, STATUSTIME_SHORT, "%s", qApp->translate( "Command", "Selected primitives duplicated" ).toUtf8().data() );
@@ -83,6 +115,22 @@
model->setVertexFree( nv, true );
}
+ Model::InfluenceList il;
+ Model::InfluenceList::iterator it;
+ model->getVertexInfluences( *lit, il );
+
+ for ( it = il.begin(); it != il.end(); it++ )
+ {
+ int joint = it->m_boneId;
+
+ if ( model->isBoneJointSelected( joint ) )
+ {
+ joint = jointMap[ joint ];
+ }
+
+ model->addVertexInfluence( nv, joint, it->m_type, it->m_weight );
+ }
+
vertMap[ *lit ] = nv;
}
@@ -132,70 +180,36 @@
}
- if ( !joints.empty() )
- {
-
- // Duplicated joints
- log_debug( "Duplicating %" PORTuSIZE " joints\n", joints.size() );
- for ( lit = joints.begin(); lit != joints.end(); lit++ )
- {
- int parent = model->getBoneJointParent( *lit );
-
- // TODO this will not work if parent joint comes after child
- // joint. That shouldn't happen... but...
- if ( model->isBoneJointSelected( parent ) )
- {
- parent = jointMap[ parent ];
- }
-
- // If joint is root joint, assign duplicated joint to be child
- // of original
- if ( parent == -1 )
- {
- parent = 0;
- }
-
- double coord[3];
- double rot[3] = { 0, 0, 0 };
- model->getBoneJointCoords( *lit, coord );
-
- int nj = model->addBoneJoint( model->getBoneJointName( *lit ),
- coord[0], coord[1], coord[2], rot[0], rot[1], rot[2], parent );
- jointMap[ *lit ] = nj;
-
- // Assign duplicated vertices to duplicated bone joints
- list vertlist = model->getBoneJointVertices( *lit );
- list::iterator vit;
- for ( vit = vertlist.begin(); vit != vertlist.end(); vit++ )
- {
- if ( model->isVertexSelected( *vit ) )
- {
- model->setVertexBoneJoint( vertMap[ *vit ], nj );
- }
- }
- }
- }
-
if ( !points.empty() )
{
// Duplicated points
log_debug( "Duplicating %" PORTuSIZE " points\n", points.size() );
for ( lit = points.begin(); lit != points.end(); lit++ )
{
- int parent = model->getPointBoneJoint( *lit );
-
- if ( model->isBoneJointSelected( parent ) )
- {
- parent = jointMap[ parent ];
- }
-
double coord[3];
double rot[3] = { 0, 0, 0 };
model->getPointCoords( *lit, coord );
model->getPointRotation( *lit, rot );
int np = model->addPoint( model->getPointName( *lit ),
- coord[0], coord[1], coord[2], rot[0], rot[1], rot[2], parent );
+ coord[0], coord[1], coord[2], rot[0], rot[1], rot[2], -1 );
+
+ Model::InfluenceList il;
+ Model::InfluenceList::iterator it;
+ model->getPointInfluences( *lit, il );
+
+ for ( it = il.begin(); it != il.end(); it++ )
+ {
+ int joint = it->m_boneId;
+
+ if ( model->isBoneJointSelected( joint ) )
+ {
+ joint = jointMap[ joint ];
+ }
+
+ model->addPointInfluence( np, joint, it->m_type, it->m_weight );
+ }
+
pointMap[ *lit ] = np;
}
}
diff -Nru mm3d-1.3.13/src/commands/edgedivcmd.cc mm3d-1.3.14/src/commands/edgedivcmd.cc
--- mm3d-1.3.13/src/commands/edgedivcmd.cc 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/commands/edgedivcmd.cc 2023-04-23 07:02:24.000000000 +0000
@@ -98,6 +98,12 @@
newVertex = model->addVertex( coord1[0], coord1[1], coord1[2] );
}
+ float oldST[3][2];
+ for ( int i = 0; i < 3; i++ )
+ {
+ model->getTextureCoords( tri, i, oldST[i][0], oldST[i][1] );
+ }
+
int g = model->getTriangleGroup( tri );
int vert[3];
@@ -108,13 +114,39 @@
int newTri = model->addTriangle( vert[0], vert[1], vert[2] );
if ( g >= 0 )
{
- model->addTriangleToGroup( newTri, g );
+ model->addTriangleToGroup( g, newTri );
}
vert[ a ] = tv[a];
vert[ b ] = newVertex;
vert[ c ] = tv[c];
model->setTriangleVertices( tri, vert[0], vert[1], vert[2] );
+
+ float st[3][2];
+ for ( int i = 0; i < 2; i++ )
+ {
+ st[a][i] = ( oldST[a][i] + oldST[b][i] ) / 2.0f;
+ st[b][i] = oldST[b][i];
+ st[c][i] = oldST[c][i];
+ }
+
+ for ( int i = 0; i < 3; i++ )
+ {
+ model->setTextureCoords( newTri, i, st[i][0], st[i][1] );
+ }
+
+ for ( int i = 0; i < 2; i++ )
+ {
+ st[a][i] = oldST[a][i];
+ st[b][i] = ( oldST[a][i] + oldST[b][i] ) / 2.0f;
+ st[c][i] = oldST[c][i];
+ }
+
+ for ( int i = 0; i < 3; i++ )
+ {
+ model->setTextureCoords( tri, i, st[i][0], st[i][1] );
+ }
+
split++;
}
}
diff -Nru mm3d-1.3.13/src/commands/makefacecmd.cc mm3d-1.3.14/src/commands/makefacecmd.cc
--- mm3d-1.3.13/src/commands/makefacecmd.cc 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/commands/makefacecmd.cc 2023-04-23 07:02:24.000000000 +0000
@@ -82,7 +82,9 @@
it++;
v3 = *it;
- model->addTriangle( v1, v2, v3 );
+ int tri = model->addTriangle( v1, v2, v3 );
+ model->selectTriangle( tri );
+
return true;
}
else
diff -Nru mm3d-1.3.13/src/commands/Makefile.am mm3d-1.3.14/src/commands/Makefile.am
--- mm3d-1.3.13/src/commands/Makefile.am 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/commands/Makefile.am 2023-04-23 07:02:24.000000000 +0000
@@ -16,6 +16,7 @@
invertcmd.h \
invnormalcmd.h \
makefacecmd.h \
+ offsetcmd.h \
pastecmd.h \
rotatetexcmd.h \
selectfreecmd.h \
@@ -43,6 +44,7 @@
invertcmd.cc \
invnormalcmd.cc \
makefacecmd.cc \
+ offsetcmd.cc \
pastecmd.cc \
rotatetexcmd.cc \
selectfreecmd.cc \
diff -Nru mm3d-1.3.13/src/commands/offsetcmd.cc mm3d-1.3.14/src/commands/offsetcmd.cc
--- mm3d-1.3.13/src/commands/offsetcmd.cc 1970-01-01 00:00:00.000000000 +0000
+++ mm3d-1.3.14/src/commands/offsetcmd.cc 2023-04-23 07:02:24.000000000 +0000
@@ -0,0 +1,57 @@
+/* Maverick Model 3D
+ *
+ * Copyright (c) 2004-2007 Kevin Worcester
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *
+ * See the COPYING file for full license text.
+ */
+
+
+#include "menuconf.h"
+#include "offsetcmd.h"
+
+#include "offsetwin.h"
+#include "log.h"
+
+#include
+#include
+
+OffsetCommand::OffsetCommand()
+{
+}
+
+OffsetCommand::~OffsetCommand()
+{
+}
+
+bool OffsetCommand::activated( int arg, Model * model )
+{
+ OffsetWin * win = new OffsetWin( model, NULL );
+ win->show();
+ return true;
+}
+
+const char * OffsetCommand::getPath()
+{
+ return GEOM_VERTICES_MENU;
+}
+
+const char * OffsetCommand::getName( int arg )
+{
+ return QT_TRANSLATE_NOOP( "Command", "Offset by Normal..." );
+}
+
diff -Nru mm3d-1.3.13/src/commands/offsetcmd.h mm3d-1.3.14/src/commands/offsetcmd.h
--- mm3d-1.3.13/src/commands/offsetcmd.h 1970-01-01 00:00:00.000000000 +0000
+++ mm3d-1.3.14/src/commands/offsetcmd.h 2023-04-23 07:02:24.000000000 +0000
@@ -0,0 +1,57 @@
+/* Maverick Model 3D
+ *
+ * Copyright (c) 2004-2007 Kevin Worcester
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *
+ * See the COPYING file for full license text.
+ */
+
+
+#ifndef __OFFSETCMD_H
+#define __OFFSETCMD_H
+
+#include "command.h"
+
+#include
+
+class OffsetCommand : public Command
+{
+ public:
+ OffsetCommand();
+ virtual ~OffsetCommand();
+
+ int getCommandCount() { return 1; };
+ const char * getPath();
+ const char * getName( int arg );
+
+ bool activated( int arg, Model * model );
+ bool isPrimitive() { return true; };
+
+ protected:
+ void getConnected(
+ Model * model, int vert,
+ std::list & conList,
+ std::list & triList);
+ void addToList( std::list & l, int ignore, int val );
+ int createMissingTriangle( Model * model, unsigned int v,
+ std::list & conList, std::list & triList );
+ int triangleCount( Model * model,
+ unsigned int v1, unsigned int v2,
+ std::list & triList, int & tri );
+};
+
+#endif // __CAPCMD_H
diff -Nru mm3d-1.3.13/src/depui/modelviewport.cc mm3d-1.3.14/src/depui/modelviewport.cc
--- mm3d-1.3.13/src/depui/modelviewport.cc 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/depui/modelviewport.cc 2023-04-23 07:02:24.000000000 +0000
@@ -252,8 +252,13 @@
h = 1;
}
- m_viewportWidth = w;
- m_viewportHeight = h;
+ // FIXME?: I think Qt 5.6 (or later) changed resizeGL() behavior from
+ // always being pixels to points that need to be scaled but I don't
+ // have convient access to test old Qt versions. So using w and h or
+ // scaling them should potentially have a Qt version check.
+
+ m_viewportWidth = w * devicePixelRatioF();
+ m_viewportHeight = h * devicePixelRatioF();
adjustViewport();
}
@@ -860,6 +865,7 @@
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
glEnable( GL_TEXTURE_2D );
+ glEnable( GL_BLEND );
glBegin( GL_QUADS );
@@ -955,6 +961,8 @@
}
glEnd();
+
+ glDisable( GL_BLEND );
}
}
}
diff -Nru mm3d-1.3.13/src/depui/texwidget.cc mm3d-1.3.14/src/depui/texwidget.cc
--- mm3d-1.3.13/src/depui/texwidget.cc 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/depui/texwidget.cc 2023-04-23 07:02:24.000000000 +0000
@@ -186,8 +186,13 @@
if ( h == 0 )
h = 1;
- m_viewportWidth = w;
- m_viewportHeight = h;
+ // FIXME?: I think Qt 5.6 (or later) changed resizeGL() behavior from
+ // always being pixels to points that need to be scaled but I don't
+ // have convient access to test old Qt versions. So using w and h or
+ // scaling them should potentially have a Qt version check.
+
+ m_viewportWidth = w * devicePixelRatioF();
+ m_viewportHeight = h * devicePixelRatioF();
updateViewport();
}
diff -Nru mm3d-1.3.13/src/implui/aboutwin.cc mm3d-1.3.14/src/implui/aboutwin.cc
--- mm3d-1.3.13/src/implui/aboutwin.cc 2021-12-20 08:37:45.000000000 +0000
+++ mm3d-1.3.14/src/implui/aboutwin.cc 2023-04-23 07:02:24.000000000 +0000
@@ -33,7 +33,7 @@
"" VERSION_STRING "
" \
"https://clover.moe/mm3d
" \
"Copyright © 2004-2008, Kevin Worcester
" \
- "Copyright © 2009-2021 Zack Middleton
" \
+ "Copyright © 2009-2023 Zack Middleton
" \
"