OpenGL을 사용하여 C++에서 부드러운 모서리와 부드러운 가장자리를 가진 큐브를 만들어야합니다. 모든 3 가지 옵션이 있습니다 : 베 지어 커브 (어쩌면 가능합니까?), 모서리와 모서리에 대해 실린더가있는 큐브 또는 큐브의 .3ds로드.부드러운 모서리로 큐브를 그리는 가장 좋은 방법은 무엇입니까? 베 지어 커브, .3ds 또는 다른로드?
아이디어가 있으십니까?
OpenGL을 사용하여 C++에서 부드러운 모서리와 부드러운 가장자리를 가진 큐브를 만들어야합니다. 모든 3 가지 옵션이 있습니다 : 베 지어 커브 (어쩌면 가능합니까?), 모서리와 모서리에 대해 실린더가있는 큐브 또는 큐브의 .3ds로드.부드러운 모서리로 큐브를 그리는 가장 좋은 방법은 무엇입니까? 베 지어 커브, .3ds 또는 다른로드?
아이디어가 있으십니까?
법선을 가운데에서 직접 가리켜 (모서리가 둥근 8 개의 구형을 시뮬레이트) 부드러운 조명으로 큐브를 시뮬레이션 할 수 있습니다. 그것은 당신이 정확히 무엇을하려고하는지에 달려 있습니다. 위의 방법을 사용하면 충분히 완벽 할 수 있습니다.
큐브를 구부러진 모서리로 정의하려면 (위를 닫은 상태에서) 큐브를 세분해야합니다. 실제로 모서리를 세분화하고 평면을 무시하면 좋은 효과를 얻을 수 있습니다.
모든 것은 가장자리에서 어떻게 세분화되는지 생각하는 것입니다. 당신이 그것을 부드럽게 수있는 방법에 대해 생각하면, 확실히, 좋은 솔루션 : 함께 올 것이다
큐브 자체는 rubiks 큐브 렌더링을위한 자식 클래스의 일부가 될 것이므로 가까이서 볼 필요는 없지만 상당히보기 좋을 필요가 있습니다. 다른 큐브 뒤에있는 큐브가 그 큐브에 영향을 미칩니 까? 이것이 배우기까지 얼마나 걸릴 것이라고 생각하십니까? 나는 시간이 꽤 제한되어있다. – QuantumKarl
pseduocode :
mesh rounded_cube(int size, int edge_radius)
{
mesh result = sphere(edge_radius)
vertex octants[] = result.verteces()
for each v in octants
{
if (v.x != 0.0)
v.x = size * (v.x/abs(v.x));
if (v.y != 0.0)
v.y = size * (v.y/abs(v.y));
if (v.z != 0.0)
v.z = size * (v.z/abs(v.z));
}
for i in result.vertices().size()
{
result.vertex[i] += octants[i]
}
return result;
}
+1 : 만일 내가 enuff 대표를 가지고 있으면 :) – QuantumKarl
가 (HTTP를 [주사위 가장자리를 매끄럽게 만들기]에서이 질문을 참조하십시오 : //stackoverflow.com/q/3480161/59303) - 구체적으로 내 대답. – ChrisF
감사합니다. 검색 결과에 나타나지 않았습니다. – QuantumKarl
.3ds를로드해도 자동으로 이미지가 렌더링되지 않습니다. 3ds를 구문 분석하고 직접 렌더링해야합니다. 렌더링의 문제는 파일 형식과 관련이 없습니다. –