--- view3ds-1.0.0.orig/Makefile.in +++ view3ds-1.0.0/Makefile.in @@ -1,5 +1,4 @@ -# Makefile.in modified by mkmocui.pl -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -104,20 +103,18 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ -Makefile.am Makefile.in NEWS TODO aclocal.m4 config.guess config.h.in \ -config.sub configure configure.in install-sh ltconfig ltmain.sh missing \ -mkinstalldirs +Makefile.am Makefile.in NEWS TODO aclocal.m4 config.h.in configure \ +configure.in install-sh ltconfig ltmain.sh missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile - perl $(top_srcdir)/utils/mkmocui.pl Makefile.am Makefile.in Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ @@ -126,7 +123,7 @@ $(ACLOCAL_M4): configure.in cd $(srcdir) && $(ACLOCAL) -config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) @@ -351,12 +348,12 @@ clean-am: clean-hdr clean-tags clean-generic mostlyclean-am -clean: clean-mocui clean-recursive +clean: clean-recursive distclean-am: distclean-hdr distclean-tags distclean-generic clean-am -rm -f libtool -distclean: clean-mocui distclean-recursive +distclean: distclean-recursive -rm -f config.status maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ @@ -415,4 +412,3 @@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: -clean-mocui: --- view3ds-1.0.0.orig/aclocal.m4 +++ view3ds-1.0.0/aclocal.m4 @@ -841,6 +841,8 @@ AC_MSG_CHECKING([for QT includes ($qt_includes)]) AC_CACHE_VAL(qt_includes_found, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS AC_TRY_CPP([#include ],qt_includes_found=yes, qt_includes_found=no) if test "$qt_includes_found" = "yes"; then @@ -850,6 +852,7 @@ qt_error=yes AC_MSG_RESULT(no) fi + AC_LANG_RESTORE ]) AC_MSG_CHECKING([for QT libraries ($qt_libraries)]) --- view3ds-1.0.0.orig/config.h.in +++ view3ds-1.0.0/config.h.in @@ -1,4 +1,4 @@ -/* config.h.in. Generated automatically from configure.in by autoheader. */ +/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */ /* Define if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING --- view3ds-1.0.0.orig/configure +++ view3ds-1.0.0/configure @@ -2921,6 +2921,49 @@ +echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 +echo "configure:2926: checking how to run the C++ preprocessor" >&5 +if test -z "$CXXCPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + CXXCPP="${CXX-g++} -E" + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CXXCPP=/lib/cpp +fi +rm -f conftest* + ac_cv_prog_CXXCPP="$CXXCPP" +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross +fi +fi +CXXCPP="$ac_cv_prog_CXXCPP" +echo "$ac_t""$CXXCPP" 1>&6 + qt_error="no" @@ -2934,7 +2977,7 @@ if test "$qt_error" = "no"; then echo $ac_n "checking for QT environment variable QTDIR""... $ac_c" 1>&6 -echo "configure:2938: checking for QT environment variable QTDIR" >&5 +echo "configure:2981: checking for QT environment variable QTDIR" >&5 if test -z "$QTDIR"; then echo "$ac_t""no" 1>&6 else @@ -3012,23 +3055,31 @@ saved_LIBS="$LIBS" CPPFLAGS="$saved_CPPFLAGS -I$qt_includes" if test -n "$qt_libraries"; then - LIBS="$saved_LIBS -L$qt_libraries -lqt" + LIBS="$saved_LIBS -L$qt_libraries -lqt-mt" else - LIBS="$saved_LIBS -lqt -lm $X11_LIBS" + LIBS="$saved_LIBS -lqt-mt -lm $X11_LIBS" fi echo $ac_n "checking for QT includes ($qt_includes)""... $ac_c" 1>&6 -echo "configure:3021: checking for QT includes ($qt_includes)" >&5 +echo "configure:3064: checking for QT includes ($qt_includes)" >&5 if eval "test \"`echo '$''{'qt_includes_found'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else + + ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3032: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3048,12 +3099,19 @@ qt_error=yes echo "$ac_t""no" 1>&6 fi + ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + fi echo $ac_n "checking for QT libraries ($qt_libraries)""... $ac_c" 1>&6 -echo "configure:3057: checking for QT libraries ($qt_libraries)" >&5 +echo "configure:3115: checking for QT libraries ($qt_libraries)" >&5 if eval "test \"`echo '$''{'qt_libraries_found'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3067,14 +3125,14 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { int i; QApplication myapp(i,0) ; return 0; } EOF -if { (eval echo configure:3078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* qt_libraries_found=yes else @@ -3086,9 +3144,9 @@ rm -f conftest* if test "$qt_libraries_found" = "yes"; then if test -n "$qt_libraries"; then - QT_LIBS="-L$qt_libraries -lqt -lm $X11_LIBS"; + QT_LIBS="-L$qt_libraries -lqt-mt -lm $X11_LIBS"; else - QT_LIBS="-lqt -lm $X11_LIBS"; + QT_LIBS="-lqt-mt -lm $X11_LIBS"; fi echo "$ac_t""yes" 1>&6 else @@ -3106,7 +3164,7 @@ fi echo $ac_n "checking for QT moc ($MOC)""... $ac_c" 1>&6 -echo "configure:3110: checking for QT moc ($MOC)" >&5 +echo "configure:3168: checking for QT moc ($MOC)" >&5 output=`eval "$MOC --help 2>&1 | sed -e '1q' | grep Qt"` if test -z "$output"; then echo "$ac_t""no" 1>&6 @@ -3116,7 +3174,7 @@ fi echo $ac_n "checking for QT uic ($UIC)""... $ac_c" 1>&6 -echo "configure:3120: checking for QT uic ($UIC)" >&5 +echo "configure:3178: checking for QT uic ($UIC)" >&5 output=`eval "$UIC --help 2>&1 | sed -e '1q' | grep Qt"` if test -z "$output"; then echo "$ac_t""no" 1>&6 @@ -3130,7 +3188,7 @@ if test "$qt_error" = "no"; then echo $ac_n "checking for QT version >= 2.2.0""... $ac_c" 1>&6 -echo "configure:3134: checking for QT version >= 2.2.0" >&5 +echo "configure:3192: checking for QT version >= 2.2.0" >&5 qt_major_version=`echo 2.2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` qt_minor_version=`echo 2.2.0 | \ @@ -3157,7 +3215,7 @@ else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then echo "$ac_t""yes" 1>&6 @@ -3395,6 +3453,7 @@ s%@X11_LIBS@%$X11_LIBS%g s%@GL_CFLAGS@%$GL_CFLAGS%g s%@GL_LIBS@%$GL_LIBS%g +s%@CXXCPP@%$CXXCPP%g s%@QT_CFLAGS@%$QT_CFLAGS%g s%@QT_LIBS@%$QT_LIBS%g s%@MOC@%$MOC%g --- view3ds-1.0.0.orig/view3ds/document.cpp +++ view3ds-1.0.0/view3ds/document.cpp @@ -22,7 +22,9 @@ #include "document.h" #include #include +#include #include +#include /*! @@ -42,7 +44,7 @@ Document::~Document() { if (d_file) { - lib3ds_close(d_file); + lib3ds_file_free(d_file); d_file=0; } } @@ -55,19 +57,45 @@ Document::open(QString filename) { if (d_file) { - lib3ds_close(d_file); + lib3ds_file_free(d_file); d_file=0; } - d_file=lib3ds_open((const char*)filename); + d_file=lib3ds_file_load((const char*)filename); if (!d_file) { puts("***ERROR*** Loading 3DS file failed."); return(false); } if (!d_file->cameras) { - puts("***ERROR*** No Camera found."); - lib3ds_close(d_file); - d_file=0; - return(false); + if (d_file->meshes) { + Lib3dsMesh *mesh = d_file->meshes; + Lib3dsVector min, max, mp; + lib3ds_mesh_bounding_box(mesh, min, max); + while(mesh = mesh->next) + { + Lib3dsVector mmin, mmax; + lib3ds_mesh_bounding_box(mesh, mmin, mmax); + for(int i=0; i < 3; ++i) + { + if (mmin[i] < min[i]) min[i] = mmin[i]; + if (mmax[i] > max[i]) max[i] = mmax[i]; + } + } + mp[0] = (min[0] + max[0])/2.; + mp[1] = (min[1] + max[1])/2.; + mp[2] = (min[2] + max[2])/2.; + d_file->cameras = lib3ds_camera_new("default"); + d_file->cameras->position[0] = mp[0]; + d_file->cameras->position[1] = mp[1]; + d_file->cameras->position[2] = min[2] - (max[1]-mp[1])/tan(15*M_PI/180.); + d_file->cameras->target[0] = mp[0]; + d_file->cameras->target[1] = mp[1]; + d_file->cameras->target[2] = mp[2]; + d_file->cameras->near_range = min[2] - fabs(0.1*min[2]); + d_file->cameras->far_range = max[2] + fabs(0.1*max[2]); + d_file->cameras->fov = 30; + } + else + return false; } d_camera=d_file->cameras->name; --- view3ds-1.0.0.orig/view3ds/viewport.cpp +++ view3ds-1.0.0/view3ds/viewport.cpp @@ -185,19 +185,28 @@ Lib3dsNode *c=lib3ds_file_node_by_name(file, (const char*)camera, LIB3DS_CAMERA_NODE); Lib3dsNode *t=lib3ds_file_node_by_name(file, (const char*)camera, LIB3DS_TARGET_NODE); if (!c || !t) { - return; - } + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective( file->cameras->fov, 1.0*d_glWidth/d_glHeight, 1.0, 20000.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective( c->data.camera.fov, 1.0*d_glWidth/d_glHeight, 1.0, 20000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef(-90, 1.0,0,0); + Lib3dsMatrix M; + lib3ds_matrix_camera(M, file->cameras->position, file->cameras->target, file->cameras->roll); + lib3ds_matrix_dump(M); + glMultMatrixf(&M[0][0]); + } else { + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective( c->data.camera.fov, 1.0*d_glWidth/d_glHeight, 1.0, 20000.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glRotatef(-90, 1.0,0,0); - Lib3dsMatrix M; - lib3ds_matrix_camera(M, c->data.camera.pos, t->data.target.pos, c->data.camera.roll); - glMultMatrixf(&M[0][0]); + Lib3dsMatrix M; + lib3ds_matrix_camera(M, c->data.camera.pos, t->data.target.pos, c->data.camera.roll); + glMultMatrixf(&M[0][0]); + } { Lib3dsNode *p; --- view3ds-1.0.0.orig/debian/changelog +++ view3ds-1.0.0/debian/changelog @@ -0,0 +1,85 @@ +view3ds (1.0.0-9) unstable; urgency=high + + * debian/control: fix Qt dependency. (closes: bug#183918) + * debian/control: s/xlibmesa-dev/xlibmesa-gl-dev, xlibmesa-glu-dev/ + * configure: repulsive hack to use -lqt-mt instead of -lqt (Qt is a royal + POS) + * debian/rules: pass /usr/include/qt3 as the includes path for Qt. + + -- Marcelo E. Magallon Tue, 15 Apr 2003 21:26:07 +0200 + +view3ds (1.0.0-8) unstable; urgency=high + + * Rebuild with lastest lib3ds-dev + * urgency high: this is holding back other stuff in sid + * view3ds/document.cpp: use 1.2 API + * debian/control: update build-depends + + -- Marcelo E. Magallon Sat, 6 Apr 2002 07:38:10 +0200 + +view3ds (1.0.0-7) unstable; urgency=low + + * *sigh*, funny bussiness with timestamps and freshly unpacked source + packages. + * debian/rules: chmod +x missing (closes: bug#124256) + + -- Marcelo E. Magallon Mon, 17 Dec 2001 08:40:26 +0100 + +view3ds (1.0.0-6) unstable; urgency=low + + * debian/control: actually add build-depend on autotools-dev. Thanks Ryan. + (closes: bug#123787) + + -- Marcelo E. Magallon Fri, 14 Dec 2001 00:46:32 +0100 + +view3ds (1.0.0-5) unstable; urgency=low + + * debian/control: build-depend on libqt3-dev. This is getting annoying. + (closes: bug#113989, bug#109798) + * debian/control: build-depend on autotools-dev (closes: bug#121477) + * debian/rules: make required changes to use autotools-dev + * aclocal.m4: use C++ for include file checking, ran autoconf. Patch bloat, + yay... + + -- Marcelo E. Magallon Sat, 8 Dec 2001 20:57:04 +0100 + +view3ds (1.0.0-4) unstable; urgency=low + + * debian/control: remove libqt2-gl from the Build-Depends and Depends line + (thanks Ivan for warning promptly about this change that happens to + break someone's package) + * Fix depends line (closes: bug#98933) + + -- Marcelo E. Magallon Sun, 27 May 2001 22:13:17 +0200 + +view3ds (1.0.0-3) unstable; urgency=low + + * debian/control: Added *hideous* ", libqt2-gl" to the Depends line at + libqt2-gl's maintainer's suggestion. + + -- Marcelo E. Magallon Mon, 23 Apr 2001 22:46:54 +0200 + +view3ds (1.0.0-2) unstable; urgency=low + + * Recompiled with libqt2-gl (closes: bug#89790) + * Recompiled with libqt-dev 2.3.0 + * debian/control: Build-Depends: change dependency to libqt2-gl at libqt's + maintainer request. Changed dependency to xlibmesa-dev | libgl-dev, + as the previous one probably breaks the autobuilders (closes: bug#94861) + * debian/control: Added *hideous* ", libqt2-gl" to the Depends line at + libqt2-gl's maintainer's suggestion. + + -- Marcelo E. Magallon Sun, 22 Apr 2001 23:53:58 +0200 + +view3ds (1.0.0-1) unstable; urgency=low + + * New upstream. + * Recompiled with libqt2.2-gl (closes: bug#87717) + + -- Marcelo E. Magallon Mon, 26 Feb 2001 23:22:19 +0100 + +view3ds (0.9.1-1) unstable; urgency=low + + * Initial Release. + + -- Marcelo E. Magallon Tue, 31 Oct 2000 07:57:09 +0100 --- view3ds-1.0.0.orig/debian/control +++ view3ds-1.0.0/debian/control @@ -0,0 +1,16 @@ +Source: view3ds +Section: graphics +Priority: optional +Maintainer: Marcelo E. Magallon +Build-Depends: debhelper, libqt3-mt-dev, lib3ds-dev (>> 1.2), xlibmesa-gl-dev | libgl-dev, xlibmesa-glu-dev | libglu-dev, autotools-dev +Standards-Version: 3.2.1 + +Package: view3ds +Architecture: any +Depends: ${shlibs:Depends} +Description: Simple viewer for 3D Studio files + This is simple realtime 3DS file previewer based on the lib3ds library + by J.E. Hoffmann. It won't display any 3DS model, but it can properly + display 3DS scenes. lib3ds was developed as part of the support + libraries for FAMP, the Free Animation and Modeling Project + (http://famp.sourceforge.net/) --- view3ds-1.0.0.orig/debian/copyright +++ view3ds-1.0.0/debian/copyright @@ -0,0 +1,12 @@ +This package was debianized by Marcelo E. Magallon on +Tue, 31 Oct 2000 07:57:09 +0100. + +It was downloaded from http://lib3ds.sourceforge.net/ + +Copyright (C) 1996-2000 by J.E. Hoffmann + +view3ds is licensed under the GNU Lesser General Public License version +2 or higher. + +On Debian systems the full text of these two licences can be found +in /usr/share/common-licenses/LGPL-2.1 files. --- view3ds-1.0.0.orig/debian/rules +++ view3ds-1.0.0/debian/rules @@ -0,0 +1,78 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# This is the debhelper compatability version to use. +export DH_COMPAT=2 + +PCKG := $(shell dh_listpackages) + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + cp -f /usr/share/misc/config.sub config.sub + cp -f /usr/share/misc/config.guess config.guess + chmod +x missing + ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --with-qt-includes=/usr/include/qt3 + + touch configure-stamp + +build: configure-stamp build-stamp +build-stamp: + dh_testdir + + $(MAKE) + #/usr/bin/docbook-to-man debian/view3ds.sgml > view3ds.1 + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + rm -f config.sub config.guess + + -$(MAKE) distclean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install prefix=`pwd`/debian/$(PCKG)/usr + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install +# dh_testversion + dh_testdir + dh_testroot + dh_installdocs + dh_installmenu + dh_installmanpages +# dh_undocumented + dh_installchangelogs ChangeLog + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure --- view3ds-1.0.0.orig/debian/menu +++ view3ds-1.0.0/debian/menu @@ -0,0 +1,2 @@ +?package(view3ds):needs=X11 section=Apps/Viewers \ + title="view3ds" command="/usr/bin/view3ds" --- view3ds-1.0.0.orig/debian/view3ds.1 +++ view3ds-1.0.0/debian/view3ds.1 @@ -0,0 +1,21 @@ +.\" Hey, EMACS: -*- nroff -*- +.TH VIEW3DS 1 "October 31, 2000" +.SH NAME +view3ds \- simple realtime 3DS file viewer +.SH SYNOPSIS +.B view3ds +.SH DESCRIPTION +\fBview3ds\fP has a simple GUI where you can display scenes and animations +stored in the 3D Studio file format. +.PP +This manual page was written for the Debian GNU/Linux distribution +because the original program does not have a manual page. +Instead, it has documentation in the GNU Info format; see below. +.SH AUTHOR +\fBview3ds\fP was written by J.E. Hoffmann as a sample +application for lib3ds, the 3DS file library, which in turn is part of +the foundations for FAMP, the Free Animation and Modeling Project, +http://famp.sourceforge.net/ +.PP +This manual page was written by Marcelo E. Magallon , +for the Debian GNU/Linux system (but may be used by others).