Magic3D脚本系统

Magic3D脚本系统

Magic3D脚本系统可以帮助您快速处理和记录您在Magic3D中的操作。它提供一系列的脚本API函数来帮助您对3D模型进行处理。脚本系统是对原始的GUI系统的有效补充,且能够更加精确的控制传入的各种参数。

使用脚本系统的优势:

  • 脚本系统对参数的控制更加精确

  • 复杂的模型操作流程可记忆和复制

  • 免除搭建库及显示部分的繁杂过程,直接快速使用算法库实现想法和功能


  • 下面通过一个简单的例子来帮助介绍此脚本系统:

    --[[
        Script for virtual scan with 3D model and output scanned points.
        With the opened model in ReliefApp, the script will do scanning for 4 views 
        of the model and output the point cloud, color image and the corresponding 
        matching data.
    --]]
    reliefApp = GetReliefApp();
    --reliefApp:ImportModel();
    scanResolutions = {1024, 1024};
    shaderName = "CookTorranceColor";
    outputFileFolder = "D:\\Models\\Bunny_Color\\tmp\\"
    for ii = 1, 4 do
        -- NOTE: lua index is started from 1
        reliefApp:CaptureDepthPointCloud(scanResolutions[1] * 2, scanResolutions[2] * 2, shaderName);
        reliefApp:RotateView(0, 1, 0, 45 * Gpp.ONE_RADIAN);
        reliefApp:SaveDepthPointCloud(outputFileFolder .. "bunny" .. (ii - 1) .. ".asc");
    end
            

    Magic3D脚本系统使用LUA语法处理读入的脚本文件,通过内嵌API函数实现对Magic3D的操作。

    上面展示的例子首先拿到当前的应用实例,然后调用该应用中的API函数对已读入的模型进行多角度模拟扫描,并保存扫描的结果到outputFileFolder中。可以看到这一脚本通过API :reliefApp:RotateView对显示视角进行精确控制,并通过循环变量直接控制输出的文件名编号。


    Lua语法

    请参考各种Lua语法书籍和网页,如Lua官网Lua程序设计(中文版)等。


    Magic3D脚本API函数

    除App获取及常量定义外,Magic3D脚本API函数都被定义为某一应用(App)的成员函数,即需要先得到该App的对象,然后使用冒号操作符进行API调用,如app:ConsolidateTopology()。目前已经支持的API函数(及其参数)列表如下:

    GPP常量定义
    Gpp.REAL_TOLGpp.REAL_LARGEGpp.INT_LARGE
    Gpp.UINT_LARGEGpp.GPP_PIGpp.ONE_RADIAN
    内置模型获取
    GetMesh()
    mesh:GetVertexCount()mesh:GetTriangleCount()
    App获取函数
    GetMeshShopApp()GetReliefApp()
    MeshShopApp中的API函数
    ImportMesh()ConsolidateTopology()ReverseDirection()
    RemoveMeshIsolatePart()ConsolidateGeometry()OptimizeMesh()
    RemoveMeshNoise(positionWeight)SmoothMesh(positionWeight)EnhanceMeshDetail()
    LoopSubdivide()RefineMesh(targetVertexCount)SimplifyMesh(targetVertexCount)
    UniformOffsetMesh(offsetValue)UniformRemesh(targetVertexCount)UniformSampleMesh(targetPointCount)
    FillHole()
    ReliefApp中的API函数
    ImportModel()RotateView(axisX, axisY, axisZ, rotateAngle)
    SavePointCloud()SaveDepthPointCloud(pointCloudName)
    CaptureDepthPointCloud(scanResolutions, imageResolution, shaderName)*
    其他App中的函数陆续开放中...

    *当前内置支持的shaderName为:"CookTorranceColor" 或 "CookTorranceShade"。

    **含有参数的API的默认参数可以参考Magic3D界面中显示的默认值


    脚本的编译和调试

    如果读入脚本存在错误,大部分错误将会打印在Log_Magic3D.txt中。请参考错误信息进行更改。如果正确完整运行脚本,最终会弹出对话框提醒脚本已执行完毕。