이 페이지에서

WavefrontMesh QML Type

WavefrontMesh는 Wavefront .obj 파일을 기반으로 한 메시를 제공합니다. 더 보기...

Import Statement: import Qt.labs.wavefrontmesh 1.12

속성

상세 설명

WavefrontMesh는 Wavefront .obj 파일에서 지오메트리를 읽어와 이를 바탕으로 2차원 폴리곤 메쉬( geometry )를 생성합니다. .obj 파일에 3차원 형상이 포함되어 있는 경우, 이는 평면에 정투영됩니다. 투영 평면이 정의된 경우, 다음 식에 따라 결정됩니다 projectionPlaneV 및 projectionPlaneW. 그렇지 않은 경우, 데이터에서 처음 발견된 면을 사용하여 투영 평면을 결정합니다.

파일에 텍스처 좌표가 포함되어 있는 경우, 이 좌표들도 사용됩니다. 그렇지 않은 경우, 오브젝트의 정점들이 정규화되어 사용됩니다.

이 메시는 ShaderEffect 에서 음영 처리된 지오메트리를 정의하는 데 사용할 수 있습니다. 지오메트리는 사용 전에 정규화되므로, 입력 객체의 위치와 크기는 결과에 영향을 미치지 않습니다.

참고: 일부 Wavefront 내보내기 도구는 내보내기 전에 소스 씬의 좌표계를 변경합니다. 이로 인해 Qt가 투영을 적용할 때 예상치 못한 결과가 발생할 수 있습니다. 시각적 결과가 기대와 다를 경우, 내보내기 매개변수와 편집기 도구의 설명서를 확인하여 이러한 문제가 있는지 확인해 보십시오.

예를 들어, 다음 예제는 표준 토러스가 포함된 .obj 파일을 사용하여 자동으로 생성된 텍스처 좌표를 시각화합니다.

그라데이션 텍스처 좌표를 가진 토러스 모양

import QtQuick 2.\1
import Qt.labs.wavefrontmesh 1.\1

ShaderEffect {
    width: 200
    height: 200
    mesh: WavefrontMesh {
        source: "torus.obj"
        projectionPlaneV: Qt.vector3d(0, 1, 0)
        projectionPlaneW: Qt.vector3d(1, 0, 0)
    }
    vertexShader: "
            uniform highp mat4 qt_Matrix;
            attribute highp vec4 qt_Vertex;
            attribute highp vec2 qt_MultiTexCoord0;
            varying highp vec2 coord;
            void main() {
                coord = qt_MultiTexCoord0;
                gl_Position = qt_Matrix * qt_Vertex;
            }"
    fragmentShader: "
            varying highp vec2 coord;
            uniform lowp float qt_Opacity;
            void main() {
                gl_FragColor = vec4(coord.x, coord.y, 0.0, 1.0);
            }"

}

참고: 입력이 3D토러스이므로 투영 평면을 정의해야 합니다. 2D 도형을 입력으로 사용할 경우에는 이 과정이 필요하지 않습니다. 이 예제에서는 입력의 방향 때문에 XY 평면을 사용합니다.

속성 설명서

lastError : enumeration

이 속성은 소스 파싱 또는 메쉬 생성 과정에서 발생한 마지막 오류(있는 경우)를 저장합니다.

  • WavefrontMesh.NoError 오류가 발생하지 않았습니다.
  • WavefrontMesh.InvalidSourceError 소스가 유효한 .obj 파일로 인식되지 않았습니다.
  • WavefrontMesh.UnsupportedFaceShapeError 소스의 면이 지원되지 않는 유형입니다. WavefrontMesh 는 삼각형과 볼록 사각형만 지원합니다.
  • WavefrontMesh.UnsupportedIndexSizeError 소스 형상이 너무 큽니다. 16비트 인덱스만 지원됩니다.
  • WavefrontMesh.FileNotFoundError 소스 파일을 찾을 수 없습니다.
  • WavefrontMesh.MissingPositionAttributeError 셰이더에서 'qt_Vertex' 속성이 누락되었습니다.
  • WavefrontMesh.MissingTextureCoordinateAttributeError 셰이더의 텍스처 좌표 속성 이름이 잘못되었습니다. 'qt_MultiTexCoord0'를 사용하십시오.
  • WavefrontMesh.MissingPositionAndTextureCoordinateAttributesError 셰이더에서 'qt_Vertex' 및 'qt_MultiTexCoord0' 속성이 모두 누락되었습니다.
  • WavefrontMesh.TooManyAttributesError 셰이더에 너무 많은 속성이 지정되어 있습니다(최대 두 개: 위치, 'qt_Vertex' 및 텍스처 좌표, 'qt_MultiTexCoord0').
  • WavefrontMesh.InvalidPlaneDefinitionError 평면 내의 V 및 W 벡터는 null이거나 서로 평행할 수 없습니다.

projectionPlaneV : vector3d

Wavefront .obj 형식은 3D 공간 내의 오브젝트를 표현하므로, Qt Quick 에서 표시하기 위해서는 좌표를 2D로 투영해야 합니다.

WavefrontMesh 에서는 적절한 평면에 대한 직교 투영을 통해 이를 수행합니다.

projectionPlaneV는 3차원 공간 내 평면을 구성하는 두 벡터 중 하나입니다. 이 벡터나 projectionPlaneW 중 하나가 (0, 0, 0)(기본값)으로 설정된 경우, 데이터 세트에서 가장 먼저 발견되는 면을 기준으로 평면이 감지됩니다.

참고: projectionPlaneV 와 projectionPlaneW 는 평행한 벡터일 수 없습니다.

projectionPlaneW : vector3d

Wavefront .obj 형식은 3D 공간 내의 오브젝트를 표현하므로, Qt Quick 에서 표시하기 전에 좌표를 2D로 투영해야 합니다.

WavefrontMesh 에서는 적절한 평면에 대한 직교 투영을 통해 이 작업을 수행합니다.

projectionPlaneW는 3차원 공간 내 평면을 구성하는 두 벡터 중 하나입니다. 이 값이나 projectionPlaneV 중 하나가 (0, 0, 0)(기본값)으로 설정된 경우, 데이터 세트에서 가장 먼저 발견되는 면을 기준으로 평면이 감지됩니다.

참고: ` projectionPlaneV ` 와 `projectionPlaneW`는 평행한 벡터일 수 없습니다.

source : url

이 속성은 소스의 URL을 저장합니다. 이 URL은 로컬 파일이나 qrc에 있어야 합니다. 소스는 Wavefront .obj 파일로 읽혀지며, 지오메트리가 업데이트됩니다.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.