https://www.acmicpc.net/problem/1291

 

1291번: 이면수와 임현수

11은 메갈루젼 문명의 어비스 오엘 우테에 속하지만 각 자리수의 총합이 1+1=2, 즉 짝수이므로 이면수가 아니고 chicken number혹은 starcraft number도 아니고 합성수도 아니므로 임현수가 아니다. 고로

www.acmicpc.net

설명이 되게 긴데 읽어보면 말장난 위주여서 재미있었다. 

우선 요약하자면

1. 어떤 숫자가 “이면수”이기 위해서는 [어비스 오엘 우테(absolute)]에 속해 있어야 하고, 각 자릿수의 합이 홀수여야 한다.

여기서 어비스 오엘 우테는 2와 3의 합으로 표현되는 숫자들, 즉 6, 7, 8, 9, 10 ... 을 말한다. 

2. 어떤 숫자가 "임현수“이기 위해서는 그 숫자가 자체가 월드 문명의 chicken number 혹은 starcraft number이거나 합성수이면서 소인수 분해를 했을 때 소인수의 종류의 개수가 짝수개 이어야 한다.

여기서  chicken number와 starcraft number 은 각각 4, 2를 의미한다.

3. 이면수이면 1, 임현수이면 2, 임현수와 이면수 둘다 아니면 3, 둘다 이면 4를 출력한다.

#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

int digit(int n) {
	int a = 0;
	while (1) {
		int b = n / pow(10, a);
		if (b < 10)
		{
			break;
		}
		a++;
	}
	return a + 1;
}

bool check소수(int n) {
	int a = 2;
	if (n == 1) {
		return false;
	}
	else {
		while (1) {
			int b = n % a;
			if (b == 0) {
				break;
			}
			a++;
		}
		if (n == a) {
			return true;
		}
		else {
			return false;
		}
	}
}

bool check이면수(int n) {
	int temp = n;
	int a = digit(n);
	vector<int> v;
	while (a>1) {
		int i = n / pow(10, a - 1);
		v.push_back(i);
		n = n - (i * pow(10, a - 1));
		a--;
	}
	v.push_back(n);
	int b = 0;
	for (int i = 0; i < v.size(); i++) {
		b += v[i];
	}
	if (temp >= 4 && temp!=5 && b % 2 == 1) {
		return true;
	}
	else {
		return false;
	}
}

bool check임현수(int n) {
	vector<int> v;
	if (n == 2 || n == 4) {
		return true;
	}

	else if (check소수(n) == true || n==1) {
		return false;
	}
	else {
		for (int i = 2; i < n; i++) {
			int a = n % i;
			if (a == 0 && check소수(i)==true) {
				v.push_back(i);
			}
		}
		if (v.size() % 2 == 0) {
			return true;
		}
		else {
			return false;
		}
	}
}

int main() {
	int n;
	cin >> n;
	if (check임현수(n) == true && check이면수(n) == true) {
		cout << 4;
	}
	else {
		if (check이면수(n) == true) {
			cout << 1;
		}
		else if(check임현수(n)==true) {
			cout << 2;
		}
		else {
			cout << 3;
		}
	}
}

조금 복잡하긴 하지만, 자리수 체크와 소수 판정, 이면수와 임현수를 판정하는 함수들을 각각 만들어 주었다. 1의 경우 예외처리가 필요했다.

'백준' 카테고리의 다른 글

백준 1052번 - 물병  (0) 2024.01.19
백준 1074번 - Z  (0) 2023.07.25
백준 1002번 - 터렛  (0) 2023.07.23
백준 1051번 - 숫자 정사각형  (0) 2023.07.21
백준 2108번 - 통계학  (0) 2023.07.21

https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 $-1$ 출력한다.

www.acmicpc.net

두 점의 좌표가 주어지고, 각각의 점으로부터 r1, r2만큼의 거리에 있는 상대의 위치를 찾는 문제이다. 있을 수 있는 곳을 찾는 것이기 때문에 여러가지 경우가 생긴다.  따라서 원으로 그리면 편하다. 결국 두 원의 접점이 몇개인지를 찾는 문제이다.

#include <iostream>
#include <cmath>

using namespace std;

int main() {
	int n, x1, y1, r1, x2, y2, r2;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
		double d = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
		if (x1 == x2 && y1 == y2) {
			if (r1 == r2) {
				cout << -1<<endl;
			}
			else {
				cout << 0<<endl;
			}
		}
		else {
			if (d > r1 + r2 || d < sqrt(pow(r2 - r1, 2))) {
				cout << 0<<endl;
			}
			else if (d + r1 == r2 || d + r2 == r1 || d == r1 + r2) {
				cout << 1<<endl;
			}

			else {
				cout << 2<<endl;
			}
		}
		
	}
}

두 원의 중심점이 일치하는 경우에는 반지름(r)이 같은지에 따라서 점점이 무한대일수도, 0개일수도 있기에 먼저 예외처리를 해주었다.

두 원의 반지름의 합이 두 원의 중심점 거리보다 짧을 경우나 중심점 거리와 한 원의 반지름의 합이 다른 원의 반지름보다 짧은 경우 0개의 접점, 반지름의 합이 거리와 같을 경우와 원 안에서 접할 경우 1개의 접점, 그 외의 경우 2개의 접점을 출력하도록 구현해주었다.

'백준' 카테고리의 다른 글

백준 1052번 - 물병  (0) 2024.01.19
백준 1074번 - Z  (0) 2023.07.25
백준 1291번 - 이면수와 임현수  (0) 2023.07.24
백준 1051번 - 숫자 정사각형  (0) 2023.07.21
백준 2108번 - 통계학  (0) 2023.07.21

https://www.acmicpc.net/problem/1051

 

1051번: 숫자 정사각형

N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행

www.acmicpc.net

3 5
42101
22100
22101

이런 식으로 수가 주어졌을 때 모서리 숫자가 같은 정사각형들 중 가장 큰 크기의 정사각형의 크기를 찾는 문제이다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	int n, m;
	string x;
	cin >> n >> m;
	vector<string> v;
	vector<int> v1;
	for (int i = 0; i < n; i++) {
		cin >> x;
		v.push_back(x);
	}
	for (int k = 0; k < n; k++) {
		for (int i = 0; i < m; i++) {
			for (int j = i; j < m; j++) {
				if (v[k][i] == v[k][j]) {
					int a = j - i + 1;
					for (int l = k; l < n; l++) {
						if (v[k][i] == v[l][i]) {
							if (v[k][j] == v[l][j]) {
								int b = l - k + 1;
								if (a == b) {
									v1.push_back(a * b);
								}
							}
						}
					}
				}
			}
		}
	}
	int max = *max_element(v1.begin(), v1.end());
	cout << max;
}

for문을 사용해 가로줄에서 같은 숫자 두개를 찾았고, 그 숫자들 기준으로 세로줄에 같은 숫자가 있으면 직사각형을 찾은 것이다. 문제에서는 정사각형을 찾으라고 하였기에 a,b가 같은 경우만 크기로 저장해 주었다.

저장된 크기 중 가장 큰 값을 찾으면 된다.

'백준' 카테고리의 다른 글

백준 1052번 - 물병  (0) 2024.01.19
백준 1074번 - Z  (0) 2023.07.25
백준 1291번 - 이면수와 임현수  (0) 2023.07.24
백준 1002번 - 터렛  (0) 2023.07.23
백준 2108번 - 통계학  (0) 2023.07.21

https://www.acmicpc.net/problem/2108

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

  1. 산술평균 : N개의 수들의 합을 N으로 나눈 값
  2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
  3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값
  4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이

주어진 n개의 수들에 대하여 위의 4가지 값을 구하는 문제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    int x;
    cin >> n;
    int* a = new int[n];
    vector<int> v;
    for (int i = 0; i < n; i++) {
        cin >> x;
        a[i] = x;
    }
    double b = 0;
    for (int i = 0; i < n; i++) {
        b += a[i];
    }
    if (b < 0) {
        int c = int(-1 * (b / n) + 0.5* -1;
        cout << c << '\n';  //음수 산술평균을 반올림
    }
    else {
        int c = int((b / n) + 0.5);
        cout << c << '\n';  //양수 산술평균을 반올림
    }
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[i] > a[j]) {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    cout << a[(n - 1/ 2<< '\n'//위에서 오름차순으로 정렬한 값들중 중간값
    for (int i = 0; i < n - 1; i++) {
        int d = 1;
        for (int j = i + 1; j < n; j++) {
            if (a[i] == a[j]) {
                d++;
            }
        }
        v.push_back(d);
    }  // 이중 for문으로 최빈값을 구하려고 시도했음
    v.push_back(1);
    int e = 0;
    int max_index = max_element(v.begin(), v.end()) - v.begin();
    for (int i = max_index + 1; i < n; i++) {
        if (v[i] == v[max_index]) {
            e++;
        }
    }
    if (e == 0) {
        cout << a[max_index] << '\n'
    }
    else {
        v[max_index] = 0;
        int max_index1 = max_element(v.begin(), v.end()) - v.begin();
        cout << a[max_index1] << '\n';
    }
    cout << a[n - 1- a[0<< '\n'// 정렬한 표에서 가장 큰값과 ㅏㄱ은값 
}
cs

위의 코드처럼 하였더니 이중 for문에서 overflow가 발생하여 시간 초과가 나타났다. 

그래서 입력되는 정수 값들이 4000을 넘지 않는다는 점을 이용해 0부터 8000까지의 인덱스를 가지는 벡터1을 새로 만들어주고, 입력받은 숫자의 값 +4000 을 한 값이 몇번 등장하는지를 벡터 1의 각 인덱스의 값을 증가시킴으로써 기록해 주었다.

(예를 들자면 1을 입력 받을 경우 벡터 1의 4001번째 인덱스에 해당하는 값을 +1 해주어 횟수를 기록하는 방식이다.)

마지막에 최빈값에 해당하는 인덱스에서 4000을 뺀 값을 답으로 출력하면 된다. 최빈값이 여러개일 경우 벡터 1의 최빈값에 해당하는 인덱스를 0으로 만들어 주어 다시 최빈값을 찾는 방식으로 최빈값 중 두번째로 작은 수를 찾아낼 수 있었다.

아래는 수정한 코드이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    int x;
    cin >> n;
    vector<int> a;
    vector<int> v;
    for (int i = 0; i < 8001; i++) {
        v.push_back(0);
    }
    for (int i = 0; i < n; i++) {
        cin >> x;
        a.push_back(x);
    }
    double b = 0;
    for (int i = 0; i < n; i++) {
        b += a[i];
    }
    if (b < 0) {
        int c = int(-1*(b / n) + 0.5)*-1;
        cout << c << '\n';
    }
    else {
        int c = int((b / n) + 0.5);
        cout << c << '\n';
    }
    sort(a.begin(), a.end());
    cout << a[(n-1/ 2]<<'\n';
    for (int i = 0; i < n; i++) {
        v[a[i]+4000]++;
    }
    int e = 0;
    int max_index = max_element(v.begin(), v.end()) - v.begin();
    for (int i = max_index+1; i < 8001; i++) {
        if (v[i] == v[max_index]) {
            e++;
        }
    }
    if (e == 0) {
        cout << max_index-4000 << '\n';
    }
    else {
        v[max_index] = 0;
        int max_index1 = max_element(v.begin(), v.end()) - v.begin();
        cout << max_index1-4000 << '\n';
    }
    cout << a[n - 1- a[0<< '\n';
}
cs

'백준' 카테고리의 다른 글

백준 1052번 - 물병  (0) 2024.01.19
백준 1074번 - Z  (0) 2023.07.25
백준 1291번 - 이면수와 임현수  (0) 2023.07.24
백준 1002번 - 터렛  (0) 2023.07.23
백준 1051번 - 숫자 정사각형  (0) 2023.07.21

이번에는 지난번에 만들었던 고라파덕에 텍스처를 입히려고 한다. 

화면 좌측 상단에서 uv 에디팅을 선택하여 주고, 좌측 상단의 UV 동기화를 선택하면 아래와 같이 표시가 된다.

 

여기서 페인팅을 진행할 수 있다. 모서리 선택 모드에서 alt와 함께 모서리를 누르면 그 줄의 모든 모서리가 선택된다. 

그 후 마우스 우클릭을 하여 '씨임을 마크' 옵션을 누르면 아래와 같이 진한 주황색 선이 생긴다.

우측 상단의 UV를 누르고 펼치기를 선택하면, 좌측의 2차원 UV가 아래와 같이 표시된다.

좌측 uv맵의 요소들을 적절히 옮겨 보기 편하게 만들어 준 뒤, 2048 px와 노란색으로 이미지 파일로 저장해주었다.

그후 에디트 모드에서 텍스처 페인팅 모드로 전환해주고, 우측 상단의 설정에서 싱글 이미지를 선택해주었다.

그리고 위 사진처럼 그림 모양 아이콘에서 아까 저장한 uv map을 불러오고, 다음으로 아래의 텍스처 프로퍼티스에 들어가준다.

브러시를 하나 추가해주고, 미리 다운로드해준 고라파덕 이미지를 들고와봤다.

설정에서 스탠실이라는 옵션을 적용하면 아래처럼 페인팅을 할 때 이미지를 겹칠 수 있다.

위 사진처럼 방향을 바꿔가며 칠해주면 된다. 다른 이미지를 사용하는 것은 자유이다.

좌측의 uv맵을 다 칠해주었다면 그대로 이미지 버튼에서 저장을 선택하여 저장해주면 된다.

몸의 다른 부위도 같은 방법으로 다 색칠해주었다.

다 색칠했다면 다음은 Shading 으로 넘어가야 한다.

머티리얼을 추가해주고, 아까 만든 UV map들을 불러와 적용시켜 주기만 하면 된다.

이미지 텍스처를 선택한 뒤 불러오기를 진행해주었다. 

모든 이미지 텍스처 적용을 완성한 고라파덕의 모습이다.

numpad 0을 누르고 카메라 위치를 조정한 뒤, 렌더링 될 모습의 이미지를 나타내었다. 더 사실적으로 표현하기 위해 우측의 scene 탭에서 렌더링 엔진을 cycles로 바꿔준 뒤 렌더링된 이미지를 저장해주었다.

아래는 완성된 고라파덕의 모습이다.

오늘은 고라파덕을 완성해 보았다. 다음 글부터는 부가적인 기능을 더 활용하여 다른 작품을 만드는 과정을 담도록 하겠다.

이번에는 고라파덕의 머리와 입을 만들어주었다.

큐브를 하나 추가하여 에디트 모드에서 점을 이동시켜 모양을 만들어준 뒤, 섭디비전 표면을 추가하여 굴곡을 표현하였다.

 머리와 입을 합체한 뒤, 입을 머리에 맞게 조정해 주었다.

눈도 만들어주고, 머리와 합체해주었다.

위 처럼 발도 만들어서 섭디비전 표면을 적용해주고, 

전체적인 외형을 다듬어주었다.

머리털까지 추가하여 기초 모델링을 완료하였다. 

다음 시간에는 머티리얼을 설정하여 진짜 고라파덕처럼 보이게 하는 과정을 담겠다.

 

기초적인 지식만을 가지고 포켓몬스터의 고라파덕을 모델링 해보려고 한다.

 

추가 탭에서 UV 구체 하나를 추가해주었다. 왼쪽 아래에 추가 옵션이 나오는데, 부분과 링을 수정하여 구체를 몇등분할 지 결정할 수 있다. 정교하게 만들고 싶어 처음부터 부분과 링의 수치를 엄청 높여봤는데, 그럴 필요가 없다는 것을 깨달았다.

이런식으로 에디터 모드에서 막 만든 뒤 다시 오브젝트 모드로 돌아가서,

오른쪽 아이콘들 중 팬치 모양 아이콘을 선택한 후 모디파이어 추가에서 섭디비전 표면을 추가하면

위와 같이 굴곡을 표현해준다.

오른쪽 탭에 "levels viewport" 라는 옵션이 보일 것인데, 이 수치를 올리면 뷰포트에서 더욱 더 자연스러운 이미지를 보여주게 된다.

또한 오브젝트를 우클릭하여 셰이드 스무스를 활성화하면 부드러운 표면을 보여주게 된다.

이러한 것들을 활용해서 간단히 고라파덕 형체를 만들고, 부드럽게 해 주었다.

몸통 부분을 모델링하였는데, 에디트 모드를 적극 활용하였다. 

상당히 많은 시간이 소모되었는데, 역시 짬이 부족해서 그런 것 같다. 머리와 발은 5일차에 이어서 완성하겠다.

이번에는 블렌더의 에디터 모드를 알아보았다.

사람 1

빨간 원 안의 오브젝트 모드를 에디터 모드로 변경해주면 되는데, 들어가면 아래와 같은 모습이 된다.

발 쪽에 무슨 점들이 생긴 걸 볼 수 있는데, 저 점들은 각각 선택하여 움직일 수 있다.

오류 아님

왼쪽 탭에서 이동을 누르고 각각의 점을 선택한 뒤 움직이면 위와 같은 현상이 발생한다. 중복 선택도 가능하고, 축 고정도 가능하다.

점 말고 다른 방식도 가능한데, 위의 빨간 원 안에는 순서대로 점 선 면 이다. 각각 선택하면 아래와 같아진다.

선 모드

선 선택에서는 모서리가 선택되어  하얗게 된것을 볼 수 있는데, 이때는 모서리를 기준으로 변형이 가능하다.

면 모드

면 선택도 마찬가지로 선택 시 한 면이 약간 불그스름하게 변한것을 볼 수 있고 다른 요소도 점, 모서리와 동일하다.

왼쪽 옵션에서 루프 잘라내기를 선택하면 아래처럼 면을 절단할 수 있다.

오른쪽 신발에 노랗게 사각형이 생긴 것을 볼 수 있는데, 이 사각형을 기준으로 면이 절단된다.

왼쪽 위에 잘라내기의 수를 조절하여 몇등분을 할 지도 정할 수 있다. 필자는 4등분을 선택해 보았는데 아래와 같은 결과가 나왔다.

두 방향으로 4등분을 했는데, 점 모드에서 점이 각 꼭짓점마다 있는 것을 볼 수 있다. 이 점들은 모두 수정이 가능하고, 모서리와 면도 마찬가지로 원하는대로 수정이 가능해진다.

왼쪽 탭에서 지역 돌출을 사용하면 원하는 방향으로 선택한 부분이 돌출된다.

간 표시 안은 모서리 선택 모드에서 지역 돌출을 사용해 돌출시킨 것이다. 그리고 왼쪽은 면 모드에서 지역 돌출 옵션을 사용했을 때의 표시이다.

위 사진처럼 돌출 시킨후 s를 눌러 크기를 조절하면 굴곡도 표현이 가능해진다.

스핀을 사용하면 아래와 같은 기하학적인 모양이 만들어지는데, 원을 만들 때 유용하게 쓰일 것 같다.

이렇게 블렌더의 기본적인 것들에 대하여 알아보았는데, 라이팅 등도 있지만 빛을 추가하는 것은 별로 어렵지 않아 따로 담진 않았다.

블렌더를 접해보지 않은 사람들이 이 글을 보고 어 나도 해봐야지 하는 마음을 가졌으면 좋겠다. 재미있고 별로 어렵지 않았다! 다음 시간에는 더욱 더 디테일한 것들을 만들어 보도록 하겠다.

 

간단하게 사람을 만들어 보았다.

큐브 메시를 추가하고, shift + d 를 사용해 복제하고, s 를 눌러 크기를 조절하는 작업이 다인 간단한 과정이다.

 

shift + d 와 x,y,z중 하나를 누르면 각각의 축으로만 물체를 움직일 수 있고, 마찬가지로 s를 눌러 크기를 조절할 때에도 x,y,z 중 하나를 누르면 누른 축으로만 크기가 조절된다.

복제 + 축 고정
크기조절 + 축 고정

색 배정같은 경우 shading 탭에서 머티리얼을 생성한 뒤 베이스 컬러를 변경해주면 된다.

shift + d로 복사한 것들이 같은 머티리얼로 묶여 있는 경우에는 개별적으로 삭제 후 머티리얼을 다시 추가해 주어야 한다.

 

우여곡절 끝에 완성한 사람이다.

첫작품으로 기록하겠다

 

렌더를 설치하는것으로 시작하여 기본적인 기능을 알아보았다.

 

블렌더는 https://www.blender.org/download/   

 

Download — blender.org

The Freedom to Create.

www.blender.org

에서 설치하면 된다.

 

블렌더를 일반 설정으로 처음 시작하면 위와 같아진다.

 

마우스 휠로 뷰포트 크기를 조정 가능하고, 마우스 휠을 누른 상태로 마우스를 움직이면 뷰포트가 회전한다.

또 G를 누른 상태로 마우스 드래그를 하면 선택한 물체가 자유롭게 움직이고, 마우스 왼쪽 버튼 클릭 시 그 자리에 멈춘다.

언리얼 엔진을 주로 했었다보니 익숙하지 않은데, 통일되었으면 좋았겠다..

 

왼쪽 위 추가 버튼을 눌러서 메시를 추가할 수 있다. 또한 shift+d를 누르고 드래그하면 복사가 된다고 한다! (편함)

왼쪽은 메시 크기 조절, 회전 등을 다루는 버튼이다.

 

위쪽의 shading 으로 가서 추가한 메시의 설정을 변경할 수 있다.

중앙의 '새로운' 을 누르면 머터리얼 설정이 생기는데, 여기서 컬러를 조정할 수 있다.

num 0 을 눌러서 카메라 뷰로 이동할 수 있고, n을 눌러서 카메라 뷰 설정도 가능하다.

뷰 탭으로 가서 잠금 - camera to view를 활성화하면 마우스를 드래그해도 카메라 뷰가 풀리지 않고, 이것으로 카메라 화면 안에 메시들을 담을 수 있다.

오른쪽에서 카메라 모양 버튼을 클릭하면 렌더링 방식을 정할 수 있다.

렌더 엔진에 따라 달라짐

Eevee는 렌더링이 사실적이지는 않고, 색깔을 보여주는 렌더링 엔진이다. 컴퓨터 성능에 크게 구애받지 않는다.

반면 Cycles는 더욱 고성능의 렌더링이고, 컴퓨터 성능이 더욱더 필요해진다.

직접 보면 엄청 차이난다.

왼쪽 위 렌더를 눌러서 렌더링할 수 있다. 아까 설정한 카메라안에 담긴 이미지가 출력된다.

Eevee로 렌더링한 이미지

Cycles로 렌더링한 이미지

이렇게 보니 큰 차이는 없어보이나, 빛 반사나 선명함이 후자쪽이 더 나은 것 같아보인다.

나중에 더 많은것을 작업하였을 때 확연히 차이가 날 것 같다.

 

작업 파일을 3D 오브젝트로 내보내고 싶을 때에는 파일 -> 내보내기를 눌러 원하는 형식으로 내보내면 된다. 

유니티 사용자들은 주로 fbx나 obj를 사용하는 것을 추천한다.

 

1회차는 간단하게 알아보기만 하였다. 2회차는 직접 의미있는 것을 만들어보는 과정을 담겠다.

+ Recent posts