반응형
□ UV 포인트란?
UV 포인트는 3D 모델의 표면을 2차원 이미지(텍스처)로 펼쳐놓았을 때의 좌표를 의미합니다. 마치 지구본을 평면 지도로 펼치듯이, 3차원의 복잡한 모델을 2차원 이미지로 펼쳐놓아야 텍스처를 입힐 수 있기 때문입니다. 이때 펼쳐진 평면에서의 위치를 나타내는 좌표가 바로 UV 좌표이며, 특정 위치를 지칭할 때 UV 포인트라고 합니다.
왜 UV 포인트가 필요할까요?
- 텍스처 매핑:
3D 모델에 이미지를 입히는 과정을 텍스처 매핑이라고 합니다. UV 포인트를 통해 텍스처 이미지의 어떤 부분이 모델의 어느 위치에 매핑될지를 정확하게 지정할 수 있습니다. - 디테일 표현:
작은 디테일이나 복잡한 패턴을 모델에 표현하기 위해서는 고해상도의 텍스처가 필요합니다. UV 포인트를 활용하여 텍스처를 효율적으로 배치하고, 원하는 부분에 더 높은 해상도의 텍스처를 할당할 수 있습니다. - 변형:
UV 맵을 조작하여 모델의 형태를 변형시키거나 텍스처의 배치를 변경할 수 있습니다.
UV 포인트를 이용한 작업 예시
- 3D 모델링: 3D 모델링 프로그램에서 모델을 생성하고 UV 맵을 생성하는 작업을 합니다.
- 게임 개발: 게임 캐릭터나 배경에 텍스처를 입혀 생동감을 부여합니다.
- 건축 시뮬레이션: 건축물의 외관에 다양한 재질을 입혀 시각화합니다.
- VR/AR: 가상 현실이나 증강 현실 콘텐츠를 제작할 때 사용됩니다.
▷ 참고자료 . . .
IpfcSurface 세부 내용
모델의 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 |