본문 바로가기
  • Welcome!
VBA, VB.NET For Creo

Surface UV 포인트

by ToolBOX01 2024. 12. 16.
반응형

□ UV 포인트란?

UV 포인트는 3D 모델의 표면을 2차원 이미지(텍스처)로 펼쳐놓았을 때의 좌표를 의미합니다. 마치 지구본을 평면 지도로 펼치듯이, 3차원의 복잡한 모델을 2차원 이미지로 펼쳐놓아야 텍스처를 입힐 수 있기 때문입니다. 이때 펼쳐진 평면에서의 위치를 나타내는 좌표가 바로 UV 좌표이며, 특정 위치를 지칭할 때 UV 포인트라고 합니다.

 

왜 UV 포인트가 필요할까요?

  • 텍스처 매핑:
    3D 모델에 이미지를 입히는 과정을 텍스처 매핑이라고 합니다. UV 포인트를 통해 텍스처 이미지의 어떤 부분이 모델의 어느 위치에 매핑될지를 정확하게 지정할 수 있습니다.
  • 디테일 표현: 
    작은 디테일이나 복잡한 패턴을 모델에 표현하기 위해서는 고해상도의 텍스처가 필요합니다. UV 포인트를 활용하여 텍스처를 효율적으로 배치하고, 원하는 부분에 더 높은 해상도의 텍스처를 할당할 수 있습니다.
  • 변형: 
    UV 맵을 조작하여 모델의 형태를 변형시키거나 텍스처의 배치를 변경할 수 있습니다.

 

UV 포인트를 이용한 작업 예시

  • 3D 모델링: 3D 모델링 프로그램에서 모델을 생성하고 UV 맵을 생성하는 작업을 합니다.
  • 게임 개발: 게임 캐릭터나 배경에 텍스처를 입혀 생동감을 부여합니다.
  • 건축 시뮬레이션: 건축물의 외관에 다양한 재질을 입혀 시각화합니다.
  • VR/AR: 가상 현실이나 증강 현실 콘텐츠를 제작할 때 사용됩니다.

 

▷ 참고자료 . . .

 

지표면 | Dynamo Primer

표면 모델에서 곡선을 사용하는 방식에서 표면을 사용하는 방식으로 전환하면서 보이는 객체를 3D 표준으로 나타낼 수 있게 되었습니다. 곡선이 항상 평면형인 것은 아닙니다. 곡선은 3차원에

primer.dynamobim.org


IpfcSurface 세부 내용

 

Creo 서피스 분석

□ Feature를 구성 하고 있는 서피를 분석 합니다 모델 이미지 서피스 분석 번호 2는 서피스 분석 결과 면적이 "50"이고. 평면 타입 입니다. 이것은 Feature 9에 속해 있습니다. U,V 는 표면 모서리의 OUTL

tool-2020.tistory.com

 

모델의 Surface ID, Name, Area를 가져오는 코드 입니다.

Creo 모델 프로그램 실행 결과

 

Code

Option Explicit
Sub TEST001()
    On Error GoTo RunError
    Application.EnableEvents = False

    '// Module Name : CreoVBAStart
    Call CreoVBAStart.CreoConnt01
    
    Dim ModelItemOwner As IpfcModelItemOwner
    Dim ModelItems As IpfcModelItems
    Dim ModelItem As IpfcModelItem
    
    Dim Surface As IpfcSurface
    Dim i As Long
    
    Set ModelItemOwner = Model
    Set ModelItems = ModelItemOwner.ListItems(EpfcModelItemType.EpfcITEM_SURFACE)
            
            For i = 0 To ModelItems.Count - 1
                
                Set ModelItem = ModelItems(i)
                Set Surface = ModelItems(i)
                 
                Worksheets("TEST01").Cells(i + 5, "A") = i + 1
                Worksheets("TEST01").Cells(i + 5, "B") = ModelItem.id
                Worksheets("TEST01").Cells(i + 5, "C") = ModelItem.GetName
                Worksheets("TEST01").Cells(i + 5, "D") = Surface.EvalArea

            Next i
    
    conn.Disconnect (2)
    
    
    '// Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set BaseSession = Nothing
    Set Model = Nothing
    
RunError:
            If Err.Number <> 0 Then
                MsgBox "Process Failed: An error occurred." & vbCrLf & _
                       "Error No: " & CStr(Err.Number) & vbCrLf & _
                       "Error Description: " & Err.Description & vbCrLf & _
                       "Error Source: " & Err.Source, vbCritical, "Error"
                If Not conn Is Nothing Then
                    If conn.IsRunning Then
                        conn.Disconnect (2)
                    End If
                End If
            End If
End Sub

 

Surface의 방향을을 알수있습니다.

 

Code

Option Explicit
Sub TEST001()
    On Error GoTo RunError
    Application.EnableEvents = False

    '// Module Name : CreoVBAStart
    Call CreoVBAStart.CreoConnt01
    
    Dim ModelItemOwner As IpfcModelItemOwner
    Dim ModelItems As IpfcModelItems
    Dim ModelItem As IpfcModelItem
    
    Dim Surface As IpfcSurface
    Dim i As Long
    
    Set ModelItemOwner = Model
    Set ModelItems = ModelItemOwner.ListItems(EpfcModelItemType.EpfcITEM_SURFACE)
            
            For i = 0 To ModelItems.Count - 1
                
                Set ModelItem = ModelItems(i)
                Set Surface = ModelItems(i)
                 
                Worksheets("TEST01").Cells(i + 5, "A") = i + 1
                Worksheets("TEST01").Cells(i + 5, "B") = ModelItem.id
                Worksheets("TEST01").Cells(i + 5, "C") = ModelItem.GetName
                Worksheets("TEST01").Cells(i + 5, "D") = Surface.EvalArea
                
                If Surface.GetOrientation = 1 Then
                    Worksheets("TEST01").Cells(i + 5, "e") = "OUTWARD"
                ElseIf Surface.GetOrientation = 2 Then
                    Worksheets("TEST01").Cells(i + 5, "e") = "INWARD"
                   
               End If
            Next i
    
    conn.Disconnect (2)
      
    '// Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set BaseSession = Nothing
    Set Model = Nothing
    
RunError:
            If Err.Number <> 0 Then
                MsgBox "Process Failed: An error occurred." & vbCrLf & _
                       "Error No: " & CStr(Err.Number) & vbCrLf & _
                       "Error Description: " & Err.Description & vbCrLf & _
                       "Error Source: " & Err.Source, vbCritical, "Error"
                If Not conn Is Nothing Then
                    If conn.IsRunning Then
                        conn.Disconnect (2)
                    End If
                End If
            End If
End Sub

 

by korealionkk@gmail.com

'VBA, VB.NET For Creo' 카테고리의 다른 글

Creo.js ?  (1) 2024.12.18
Model Parameter change ,Drawing Parameter connection is broken  (0) 2024.12.18
IpfcSurface  (1) 2024.12.16
IpfcModelItemOwner  (0) 2024.12.15
Parent-Child Relationships between the VB API Objects  (1) 2024.12.12