国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

讀取3D文件mesh格式工具

這篇具有很好參考價(jià)值的文章主要介紹了讀取3D文件mesh格式工具。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近要做一個(gè)3d儀表,所以了解了一下3d相關(guān)方面的知識(shí)。這里暫時(shí)不做一一贅述,只記錄下當(dāng)前的需求。

需求:

????????由于****.mesh文件比較多,qt轉(zhuǎn)換后的名字大多都能顧名思義,但是為了更加準(zhǔn)確的找到某個(gè)部件,于是需要一個(gè)工具可以打開(kāi)并查看****.mesh文件。自己在網(wǎng)上搜了很多工具,但是都打不開(kāi),要么是打開(kāi)出錯(cuò)。

分析:

? ? ? ? 既然Qt可以加載,何不自己寫(xiě)一個(gè)簡(jiǎn)單的工具。

開(kāi)干:

代碼如下,很簡(jiǎn)單:

import QtQuick
import QtQuick.Window
import QtQuick3D
import QtQuick.Controls
import Qt.labs.platform
import QtQuick.Layouts
import QtQml
ApplicationWindow {
    width: 1024
    height: 768
    visible: true
    title: qsTr("讀取mesh文件");

    property int currentFileIndex: 0;
    property int filesCount: 0;

    property bool isLoad: false;
    property string current3dFile: ""




    header: ToolBar {
        RowLayout {
            anchors.fill: parent
            ToolButton {
                Layout.preferredWidth: 150;
                Layout.fillHeight: true;
                text: "Open mesh Model"
                onPressed: {
                    isLoad = false;
                    fileDialog.open()
                }
            }

            ToolButton {
                Layout.preferredWidth: 100;
                Layout.fillHeight: true;
                text: "Previous"
                onPressed: {
                    previous();
                }
            }

            ToolButton {
                Layout.preferredWidth: 100;
                Layout.fillHeight: true;
                text: "Next"
                onPressed: {
                    next();
                }
            }
            Item {
                Layout.fillHeight: true;
                Layout.fillWidth: true;
            }
        }
    }

    FileDialog {
        id: fileDialog;
        fileMode: FileDialog.OpenFiles;
        nameFilters: ["3d mesh files (*.mesh)"]
        onAccepted: {
            current3dFile = fileDialog.files[currentFileIndex];
            filesCount = fileDialog.files.length;
            console.log("current file = " , current3dFile , " count = " , filesCount )
            isLoad = true;
        }
    }

    footer: ToolBar  {

        TextEdit {
            id: name
            anchors.centerIn: parent;
            readOnly: true;
            font.pixelSize: 18;
            verticalAlignment: Text.AlignVCenter
            horizontalAlignment: Text.AlignHCenter;

            text:  isLoad ? ( " "+  Number(currentFileIndex+1) + "/" + filesCount + "    name : "+ getFileName(current3dFile) ) : "The 3D file is not loaded" ;
        }
    }


    function getFileName(url) {
        if ( url.length ===0)
            return "is null";

        var pos1 = url.lastIndexOf('/');
        var pos2 = url.lastIndexOf('\\');
        var pos = Math.max(pos1, pos2);
        if (pos < 0) {
            return url;
        }
        else {
            return url.substring(pos + 1);
        }
    }



    function previous() {
        if ( currentFileIndex > 0) {
            currentFileIndex --;
        }

        current3dFile = fileDialog.files[currentFileIndex];
    }

    function next() {
        if ( currentFileIndex < filesCount-1) {
            currentFileIndex ++;
        }
        current3dFile = fileDialog.files[currentFileIndex];
    }


    View3D {
        id: view3D
        anchors.fill: parent
        environment: sceneEnvironment
        SceneEnvironment {
            id: sceneEnvironment
            antialiasingQuality: SceneEnvironment.High
            antialiasingMode: SceneEnvironment.MSAA
        }

        MouseArea{
            id:mouse
            anchors.fill: parent
            property int cx: 0
            property int cy: 0
            onWheel: function(wheel){
                if(wheel.angleDelta.y>0)
                    camera.z = camera.z+5
                else
                    camera.z = camera.z-5
            }
            onPressed:function(mouse) {
                cx = mouse.x
                cy = mouse.y
            }

            onPositionChanged: function(mouse){
                var intervalX = mouse.x-cx
                var intervalY = mouse.y-cy
                cameraNode.eulerRotation.y = intervalX+cameraNode.eulerRotation.y
                cameraNode.eulerRotation.x = cameraNode.eulerRotation.x-intervalY
                cx = mouse.x
                cy = mouse.y

            }
        }
        Node {
            id: node
            DirectionalLight {
                id: directionalLight
            }

            Model {
                id: cubeModel
                source:current3dFile;
                DefaultMaterial {
                    id: cubeMaterial
                    diffuseColor: "#b5bcd7"
                }
                materials: cubeMaterial
            }
        }

        Node{
            id:cameraNode

            PerspectiveCamera {
                id: camera
                z: 15
            }
        }
    }
}

所有代碼都在,復(fù)制下來(lái)新建一個(gè)qml的3d工程即可運(yùn)行。

已經(jīng)實(shí)現(xiàn)功能:

1.鼠標(biāo)拖動(dòng)旋轉(zhuǎn)

2.滾輪放大縮小

3.上一個(gè)mesh文件

4.下一個(gè)mesh文件

5.mesh文件名字支持ctrl+c

如果有時(shí)間還可以添加如下功能:

1.多添加幾個(gè)相機(jī)機(jī)位。

2.增加材質(zhì)渲染選項(xiàng),可以選擇其他顏色。

3.其他個(gè)性化需求。

?mesh文件,qt3d學(xué)習(xí),3d,qt,開(kāi)發(fā)語(yǔ)言

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-522721.html

到了這里,關(guān)于讀取3D文件mesh格式工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Face Mesh,采用機(jī)器學(xué)習(xí),打造人臉3D表面動(dòng)態(tài)輪廓

    Face Mesh,采用機(jī)器學(xué)習(xí),打造人臉3D表面動(dòng)態(tài)輪廓

    MediaPipe Face Mesh是一種臉部幾何解決方案,即使在移動(dòng)設(shè)備上,也可以實(shí)時(shí)估計(jì)468個(gè)3D臉部界標(biāo)。它采用機(jī)器學(xué)習(xí)(ML)來(lái)推斷3D表面幾何形狀,只需要單個(gè)攝像機(jī)輸入,而無(wú)需專(zhuān)用的深度傳感器。該解決方案利用輕量級(jí)的模型架構(gòu)以及整個(gè)管線(xiàn)中的GPU加速,可提供對(duì)實(shí)時(shí)體驗(yàn)至

    2024年02月08日
    瀏覽(30)
  • 基于Open3D和PyTorch3D讀取三維數(shù)據(jù)格式OBJ

    本節(jié)將討論另一種廣泛使用的3D數(shù)據(jù)文件格式,即OBJ文件格式。OBJ文件格式最初由Wavefront Technologies Inc.開(kāi)發(fā)。與PLY文件格式類(lèi)似,OBJ格式也有ASCII版本和二進(jìn)制版本。二進(jìn)制版本是專(zhuān)有的且未記錄文檔。本章主要討論ASCII版本。 與之前類(lèi)似,將通過(guò)示例來(lái)學(xué)習(xí)文件格式。第一個(gè)

    2024年02月10日
    瀏覽(22)
  • qt加載obj格式的3D模型

    在 Qt 中加載 obj 格式的 3D 模型可以使用 Qt 3D 模塊。 首先,你需要在你的工程文件中包含 Qt 3D 模塊,方法是在工程文件的頂部添加以下行: 然后,在你的代碼中包含 Qt 3D 的頭文件: 接下來(lái),你可以使用 Qt3DRender::QObjLoader 類(lèi)來(lái)加載 obj 格式的 3D 模型。首先,創(chuàng)建一個(gè) Qt3DRen

    2024年02月16日
    瀏覽(27)
  • 3D模型格式轉(zhuǎn)換工具HOOPS Exchange:如何將3D PDF轉(zhuǎn)換為STEP格式?

    3D模型格式轉(zhuǎn)換工具HOOPS Exchange:如何將3D PDF轉(zhuǎn)換為STEP格式?

    3D CAD數(shù)據(jù)在制造、工程和設(shè)計(jì)等各個(gè)領(lǐng)域都扮演著重要的角色。為了促進(jìn)不同軟件應(yīng)用程序之間的協(xié)作和互操作性,它通常以不同的格式進(jìn)行交換。 HOOPS Exchange是一個(gè)強(qiáng)大的軟件開(kāi)發(fā)工具包,提供了處理和將3D CAD數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式的解決方案。 在本文中,我們

    2024年02月04日
    瀏覽(29)
  • 使用python-open3d讀取pcd,bin格式的點(diǎn)云,并顯示

    使用python-open3d讀取pcd,bin格式的點(diǎn)云,并顯示

    open3d讀取pcd格式點(diǎn)云 效果圖 ? ?用open3d讀取bin文件 ? 效果圖? ? ?

    2024年02月11日
    瀏覽(18)
  • 3D格式轉(zhuǎn)換工具HOOPS Exchange助力3D 打印軟件實(shí)現(xiàn)質(zhì)的飛躍

    3D格式轉(zhuǎn)換工具HOOPS Exchange助力3D 打印軟件實(shí)現(xiàn)質(zhì)的飛躍

    HOOPS SDK是用于3D工業(yè)軟件開(kāi)發(fā)的工具包,其中包括4款工具,分別是用于讀取和寫(xiě)入30多種CAD文件格式的HOOPS Exchange、專(zhuān)注于Web端工程圖形渲染的HOOPS Communicator、用于移動(dòng)端和PC端工程圖形渲染的HOOPS Visualize、支持將3D數(shù)據(jù)以原生3D PDF、HTML和標(biāo)準(zhǔn)CAD格式進(jìn)行發(fā)布的HOOPS Publish。 申

    2024年02月03日
    瀏覽(24)
  • 【Unity】模型文件格式、常見(jiàn)3D模型格式

    Unity 支持多種標(biāo)準(zhǔn)和專(zhuān)有模型文件格式。Unity 內(nèi)部使用 .fbx 文件格式作為其導(dǎo)入鏈。最佳做法盡可能使用 .fbx 文件格式,并且不應(yīng)在生產(chǎn)中使用專(zhuān)有文件格式。 標(biāo)準(zhǔn)文件格式 Unity 可讀取以下標(biāo)準(zhǔn) 3D 文件格式: .fbx .dae (Collada) .dxf .obj 這些文件格式受到廣泛支持。這些類(lèi)型的文

    2024年01月17日
    瀏覽(19)
  • STL文件格式詳解【3D】

    STL文件格式詳解【3D】

    STL(StereoLithography:立體光刻)文件是 3 維表面幾何形狀的三角形表示。 表面被邏輯地細(xì)分或分解為一系列小三角形(面)。 每個(gè)面由垂直方向和代表三角形頂點(diǎn)(角)的三個(gè)點(diǎn)來(lái)描述。 切片算法使用這些數(shù)據(jù)來(lái)確定制造商要構(gòu)建的 3 維形狀的橫截面。 本文描述了 STL 文件

    2024年02月13日
    瀏覽(22)
  • Open3D讀取文件

    Open3D讀取文件

    Open3D可以讀取點(diǎn)云文件,三角網(wǎng)格文件,也可以讀取圖片。具體方法如下: 一、點(diǎn)云文件操作 ????????Open3D支持的文件格式有xyz,xyzn,xyzrgb,pts,ply,pcd等文件。讀取的方式也非常簡(jiǎn)單。data = o3d.io.read_point_cloud(\\\"文件名“) 1、讀寫(xiě)文件 ????????函數(shù)原型如下: ???

    2024年02月08日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包