Menu

sources repackaged for cmake and autotools

2009-10-09
2013-12-23
  • Michail Vidiassov

    If you are interested in recompiling the software,
    you may take a look at http://www.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tar.gz
    I have replaced the custom build system in Intel sources with
    autotools (tested on Linux and Mac) and cmake (Windows, Linux, Mac).

    Comments welcome.

     
  • Babak Sayyid Hosseini

    Thank you for adding a CMake build interface. I had a bunch of link errors using the precompiled libs. Seems like a few symbols were not exported in the DLL's. Looking in a few header files, I didn't find __declspec(dllexport) statements so
    the author must have been using a .def file for exporting and missing to export a few functions there.

    Recompiling the code with your CMake script, however, fixed the problem.

    Dear project mainteners: Please switch to CMake

    Cheers,

    Babak Sayyid Hosseini

     
  • Anonymous

    Anonymous - 2010-08-27

    Thanks for this essential addition to this project.
    I've compiled and install it on a linux64 centos5 machine.

     
  • Michail Vidiassov

    A variant with addition of static IDTF library and an IDTFGen.cpp example of its use (essentially it is IDTFConverter without IDTF parser) is at http://www.iaas.msu.ru/tmp/u3d/u3d-1.3.tar.gz .

     
  • Michail Vidiassov

    I have updated my repack of the sources.
    No major fixes.
    It is  http://www.iaas.msu.ru/tmp/u3d/u3d-1.4.tar.gz .

     
  • Michail Vidiassov

    fixed Win32 compilation with __stdcall set in IFXAPI.h
    put VTK U3D Exporter to the code samples section
    made libIDTF shared library on Linux

    http://www.iaas.msu.ru/tmp/u3d/u3d-1.4.2.tar.gz

     
  • angevad

    angevad - 2012-03-22

    Can anybody update links to the U3D library repack? Current links doesn't work.

     
  • Michail Vidiassov

    http://www2.iaas.msu.ru/tmp/u3d/u3d-1.4.3.tar.gz
    updated png library, some MSVC Win64 build issues fixed

     
  • angevad

    angevad - 2012-03-24

    Thanks, it was so fast )) Your update will be useful for me.

     
  • angevad

    angevad - 2012-04-12

    Hi mvid, Do you know the way to compile IFXRendering project?

     
  • Michail Vidiassov

    The old versions at http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tar.gz
    and http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tgz
    may have Rendering support in autotools build under Mac and Linux.
    I have given up on the idea since:
    Adobe 3D viewer is not based on Intel code
    Mac rendering is based on obsolete API.
    My (much less than half-hearted) attempt to build rendering on Windows failed for reasons I do not remember.

     
  • Anonymous

    Anonymous - 2013-03-03

    Hi Michail,

    I search for an Universal 3D Sample Software for mac 2 days already. I finally reached a forum and download the one packaged by you, named. U3D_A_061228_5

    I got the download link from the forum (last post, 2012-4-12)
    http://sourceforge.net/projects/u3d/forums/forum/557102/topic/3424219

    download link:  http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tgz

    But somehow i cannot use cmake .; make; make install to install the package. When i use make, i received the errors below. The first error seems to has something to do with the IFXAttributes.h file.

    Matt

    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:36:3: error: call to function
          'memset' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    memset(flags, 0, sizeof(flags));
                    ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:118:11: note: in instantiation of
          member function 'IFXAttributes<22>::IFXAttributes' requested here
    CIFXMesh::CIFXMesh()
              ^
    /usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
    void    *memset(void *, int, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:49:3: error: call to function
          'memcpy' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    memcpy(flags, src.flags, sizeof(flags));
                    ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:423:16: note: in instantiation of
          member function 'IFXAttributes<22>::operator=' requested here
            eDirtyAttribs = CalculateDirtyAttribs(eAllAttribs);
                          ^
    /usr/include/string.h:82:7: note: 'memcpy' should be declared prior to the call site
    void    *memcpy(void *, const void *, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:151:11: error: call to function
          'memcmp' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    return (memcmp(flags, src.flags, sizeof(flags)) != 0);
                            ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:595:21: note: in instantiation of
          member function 'IFXAttributes<22>::operator!=' requested here
                    if(eNewAllAttribs != eAllAttribs)
                                      ^
    /usr/include/string.h:81:6: note: 'memcmp' should be declared prior to the call site
    int      memcmp(const void *, const void *, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:40:3: error: call to function
          'memcpy' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    memcpy(flags, src.flags, sizeof(flags));
                    ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:856:36: note: in instantiation of
          member function 'IFXAttributes<22>::IFXAttributes' requested here
            IFXMeshAttributes eDirtyAttribs = CalculateDirtyAttribs(eAllAttribs);
                                              ^
    /usr/include/string.h:82:7: note: 'memcpy' should be declared prior to the call site
    void    *memcpy(void *, const void *, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:147:11: error: call to function
          'memcmp' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    return (memcmp(flags, src.flags, sizeof(flags)) == 0);
                            ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:944:20: note: in instantiation of
          member function 'IFXAttributes<22>::operator==' requested here
            if((eDirtyAttribs == eAllAttribs) && (eAllAttribs == IFXMeshAttributes(IFX_MESH_POSITION)))
                              ^
    /usr/include/string.h:81:6: note: 'memcmp' should be declared prior to the call site
    int      memcmp(const void *, const void *, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:44:3: error: call to function
          'memset' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    memset(flags, 0, sizeof(flags));
                    ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:944:55: note: in instantiation of
          member function 'IFXAttributes<22>::IFXAttributes' requested here
            if((eDirtyAttribs == eAllAttribs) && (eAllAttribs == IFXMeshAttributes(IFX_MESH_POSITION)))
                                                                 ^
    /usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
    void    *memset(void *, int, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:54:3: error: call to function
          'memset' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    memset(flags, 0, sizeof(flags));
                    ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:1079:24: note: in instantiation of
          member function 'IFXAttributes<22>::operator=' requested here
            m_eInterleavedAttribs = 0;
                                  ^
    /usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
    void    *memset(void *, int, size_t);
             ^
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
    In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:179:3: error: call to function
          'memset' that is neither visible in the template definition nor found by argument-dependent
          lookup
                    memset(flags, 0, sizeof(flags));
                    ^
    /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:1691:14: note: in instantiation of
          member function 'IFXAttributes<22>::clear' requested here
            eAllAttribs.clear();
                        ^
    /usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
    void    *memset(void *, int, size_t);
             ^
    8 errors generated.
    make: ***  Error 1
    make: ***  Error 2
    make: ***  Error 2

     
  • Vassili

    Vassili - 2013-05-07

    I believe the compile error is due to changes in recent versions of gcc; see
    http://gcc.gnu.org/gcc-4.3/porting_to.html
    about "Header dependency cleanup." Basically, #include statements were removed from header files where they had been for centuries and this breaks pretty much any existing code that used to compile with previous versions of gcc. You need to find which header file is missing from where and add it.

    In this case, I believe the missing header is string.h (Do a "man memset" to see what is needed.) Since this is C++, I added the line

    #include <cstring>
    

    in RTL/Component/include/IFXAttributes.h after which the compilation completes successfully.

    However, when I try to run any of the produced executables (IDTFConverter, IDTFGen, HelloWorld) they all segfault. (Same result if I #include <string.h> instead of <cstring>.)

    I am using gcc version 4.7.2 on Ubuntu 12.10.

    If anybody else can make some more progress, please let us know.

     
  • Vassili

    Vassili - 2013-05-07

    Sorry, I should have mentioned that I tried to compile u3d-1.4.3

    - Vassili

     
  • Michail Vidiassov

    I'll try to reproduce the crash.
    Is your system 32 or 64 bit?

     
  • Vassili

    Vassili - 2013-05-08

    It's a 32-bit system

     
  • Michail Vidiassov

    > when I try to run any of the produced executables … they all segfault.
    > I am using gcc version 4.7.2 on Ubuntu 12.10.
    > It's a 32-bit system

    Comment out the call to cpuid in IFXOSInitialize in RTL/Platform/Lin32/Common/IFXOSUtilities.cpp.

    It is some asm mumbo-jumbo to determine at run time if CPU is capable of MMX or SSE.
    If check is disabled and generic code is used instead of vector operations, there will be some performance loss, but likely unnoticeable one.

    Report results.

    I'll try to make a new version of u3d repack, with fixes for new compiler warnings and updated bundled libraries, some time soon.

     
  • Vassili

    Vassili - 2013-05-13

    Yes, that worked. I was able to create an executable IDTFConverter and install it, after which I could convert a file to .u3d and embed it into a PDF document. Everything looks good. Thank you.

     
  • Michail Vidiassov

    I have put the recent changes discussed above plus some other minor fixes for compiler warnings into
    http://www2.iaas.msu.ru/tmp/u3d/u3d-1.4.4.tar.gz

     
  • Nicholas Yue

    Nicholas Yue - 2013-12-19

    I tried building the vtkU3DExporterTest.

    The build is fine but when I try to run it, it segmentation fault on Linux x64 (Ubuntu)

    I am using u3d-1.4.4.tar.gz

    Cheers

     
  • Michail Vidiassov

    Try commenting out X3D export in vtkU3DExporterTest sources, it crashed for me recently.
    X3D export is not required for U3D export, it is there just to have something to compare to.
    If that does not help - report and I'll try to investigate.

     
  • Nicholas Yue

    Nicholas Yue - 2013-12-20

    Hi Michail,

    Thanks for the info.

    Commenting out the X3D stuff no longer crashes.

    It runs and generate the test.u3d file, I embedded the test.u3d file in a PDF and it shows up fine.

    However, I noticed the following errors when the vtk test program ends

    X Error of failed request: GLXBadDrawable
    Major opcode of failed request: 128 (GLX)
    Minor opcode of failed request: 11 (X_GLXSwapBuffers)
    Serial number of failed request: 92
    Current serial number in output stream: 92

    I thought you might like to know about that too.

    Cheers

     
  • Michail Vidiassov

    X Error of failed request: GLXBadDrawable

    Looks like drawing error.
    Try to disable on-screen drawing of the test scene to test that.
    Someone using this code told me he had to update it to match VTK changes, but did not share results. May be some primitives I used in the test scene are obsolete or broken now.

    If you are interested in 3D VTK export using FOSS tools and have time and knowledge of VTK necessary for co-developing/testing it, I can revisit the issue.
    I do not use VTK now and make 3D PDFs with other tools.

     
  • Nicholas Yue

    Nicholas Yue - 2013-12-20

    I tried building the vtkU3DExporter on Windows 7, using the information that ran fine on Linux but no U3D files were generated.

    I can put in sometime to help test/debug.

    It would be easier if your source code is on GitHub and people can fork/submit-pull-request when the fixes are done.

    I have to fix the CMakeLists.txt as it requires winmm.lib on Windows
    I have to also modify the code as it requires decl export for the class.

    Let me know how I can contribute the fixes to your code base.

    Cheers

     
  • Nicholas Yue

    Nicholas Yue - 2013-12-20

    My current debugging indicates that the failure is in IFXCOMInitialize()

    if( IFXSUCCESS(result) )
    {
    // IFXDEBUG_STARTUP();
    result = IFXCOMInitialize();
    }
    printf("vtkU3DExporter 00003\n");

    if( !IFXSUCCESS(result) )
    return;
    printf("vtkU3DExporter 00004\n");

     
  • Michail Vidiassov

    I'll have time to hunt for bugs this weekend.
    Do you have Windows 7 32 or 64 bit?

    As to GitHub - as you can see from the amount of traffic on this forum, the demand was not-existent.

     
  • Nicholas Yue

    Nicholas Yue - 2013-12-20

    I found the problem. The CMakeLists.txt for u3d did not install to IFXCore.dll on Windows.

    Once the installation is fixed, it runs fine.

    The installation directory structure between Linux and Windows is different so that is a concern too and need to be address.

    Cheers

     
  • Nicholas Yue

    Nicholas Yue - 2013-12-23

    I am on 64bit.

    No worries about GitHub, what repo are you using to check-in your code ? Can you use SourceForge, will that cause confusion due to same name "U3D" ?

     
  • Michail Vidiassov

    It must be already on sf as part of MathGL project.
    Here it is -
    https://sourceforge.net/p/mathgl/code/HEAD/tree/u3d/

     

Log in to post a comment.