KR20160066228A - Distributed Rendering System - Google Patents

Distributed Rendering System Download PDF

Info

Publication number
KR20160066228A
KR20160066228A KR1020140170301A KR20140170301A KR20160066228A KR 20160066228 A KR20160066228 A KR 20160066228A KR 1020140170301 A KR1020140170301 A KR 1020140170301A KR 20140170301 A KR20140170301 A KR 20140170301A KR 20160066228 A KR20160066228 A KR 20160066228A
Authority
KR
South Korea
Prior art keywords
rendering
nodes
frame
frames
render
Prior art date
Application number
KR1020140170301A
Other languages
Korean (ko)
Other versions
KR101660514B1 (en
Inventor
구태회
Original Assignee
(주)두리반테크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)두리반테크 filed Critical (주)두리반테크
Priority to KR1020140170301A priority Critical patent/KR101660514B1/en
Publication of KR20160066228A publication Critical patent/KR20160066228A/en
Application granted granted Critical
Publication of KR101660514B1 publication Critical patent/KR101660514B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

The present invention relates to a distributed rendering system which can perform 3D content rendering at a low cost without using expensive rendering-dedicated equipment. The distributed rendering system according to the present invention comprises: a plurality of rendering nodes each of which generates an image file by rendering 3D graphic modeling data for each frame using a rendering program; and a task scheduler server which distributes all frames to be rendered, and assigns frames to be rendered to each of the rendering nodes. The task scheduler server can assign numbers or range of frames to be rendered to each of the rendering nodes according to designation of a user, or can assign numbers or range of frames to be rendered to each of the rendering nodes according to a weight designated for each of the rendering nodes.

Description

분산 렌더링 시스템{Distributed Rendering System}Distributed Rendering System [0002]

본 발명은 렌더링 시스템에 관한 것으로, 보다 상세하게는 복수 개의 렌더링 노드들을 이용하여 렌더링 작업을 분산 처리하는 분산 렌더링 시스템에 관한 것이다.The present invention relates to a rendering system, and more particularly, to a distributed rendering system for distributing rendering tasks using a plurality of rendering nodes.

일반적으로 3D 콘텐츠 렌더링은 3D 그래픽 모델링 데이터를 2차원 평면상의 이미지 데이터로 변환하는 작업을 말한다. 3D 콘텐츠 렌더링은 대부분 3D 그래픽 모델링이 이루어진 컴퓨터(장비)에서 이루어지고 있다. Generally, 3D content rendering refers to an operation of converting 3D graphic modeling data into image data on a two-dimensional plane. 3D content rendering is mostly done on computers (machines) with 3D graphics modeling.

그러나, 하나의 컴퓨터(장비)에서 3D 콘텐츠 렌더링이 이루어지는 경우 컴퓨팅 자원의 한계로 인하여 너무 많은 시간이 소요된다는 문제점이 있다. However, when 3D content rendering is performed in one computer (equipment), there is a problem that it takes too much time due to the limitation of computing resources.

예를 들어, 3D 그래픽 모델링 데이터는 많은 수의 프레임들을 포함하는데, 보통의 컴퓨터에서 하나의 프레임을 렌더링하는데 소요되는 시간은 약 2시간 정도이다. 그리고 영상이 사람의 눈에 끊김없이 자연스럽게 느껴지려면 초당 적어도 24 프레임을 필요로 한다. For example, the 3D graphics modeling data includes a large number of frames, and the time required to render one frame on a normal computer is about two hours. And it requires at least 24 frames per second to make the video feel seamless and seamless to the human eye.

따라서 예컨대 2시간 분량의 극장용 애니메이션 영화를 제작하는 경우, 2(hours)*60(minutes)*60(seconds)*24(frames)*2(좌, 우측 시각) = 345,600Hours = 40(years)이 소요되게 된다. Thus, for example, when a movie animation movie for the theater of 2 hours is produced, 2 (hours) * 60 (minutes) * 60 (seconds) * 24 (frames) * 2 (left and right views) = 345,600 hours = 40 .

이와 같이 많이 3D 콘텐츠 렌더링에 매우 많은 시간이 소요되기 때문에, 컴퓨팅 성능이 월등히 뛰어난 렌더링 전용장비가 주로 이용되고 있다. 그렇지만 이러한 렌더링 전용장비는 고가이기 때문에 구입에 어려움이 있다.Since rendering 3D contents takes much time in this way, rendering-only equipment with much better computing performance is mainly used. However, such rendering-only equipment is expensive and difficult to purchase.

본 발명이 이루고자 하는 기술적 과제는 고가의 렌더링 전용장비를 이용하지 않고도 적은 비용으로 3D 콘텐츠 렌더링을 수행할 수 있는 분산 렌더링 시스템을 제공하는 데 있다. 다만 본 발명이 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 설명으로부터 또 다른 기술적 과제가 도출될 수도 있다.SUMMARY OF THE INVENTION The present invention provides a distributed rendering system capable of performing 3D content rendering at a low cost without using expensive expensive dedicated rendering equipment. It is to be understood, however, that the technical scope of the present invention is not limited to the above-described technical problems, and other technical problems may be derived from the following description.

상기 기술적 과제를 해결하기 위한 본 발명에 따른 분산 렌더링 시스템은, 각각이, 렌더링 프로그램을 이용하여 3D 그래픽 모델링 데이터를 프레임 별로 렌더링하여 이미지 파일을 생성하는 복수 개의 렌더링 노드들; 및 렌더링할 전체 프레임들을 분배하여, 상기 복수 개의 렌더링 노드들 각각에 렌더링할 프레임들을 할당하는 작업 스케줄러 서버를 포함하고, 상기 작업 스케줄러 서버는, 사용자의 지정에 따라서 상기 렌더링 노드들 각각에 렌더링할 프레임의 번호 또는 범위를 할당하거나, 상기 렌더링 노드들 각각에 지정된 가중치에 따라서 상기 렌더링 노드들 각각에 렌더링할 프레임의 번호 또는 범위를 할당할 수 있다.According to an aspect of the present invention, there is provided a distributed rendering system including: a plurality of rendering nodes each rendering 3D graphics modeling data frame by frame using a rendering program to generate an image file; And a task scheduler for distributing all the frames to be rendered and allocating frames to be rendered to each of the plurality of render nodes, wherein the task scheduler server comprises: Or assign a number or a range of a frame to be rendered to each of the render nodes according to a weight assigned to each of the render nodes.

상기 작업 스케줄러 서버는, 상기 렌더링 노드들 각각에 지정된 가중치에 따라서 각 렌더링 노드에 할당할 프레임의 양을 결정할 수 있다.The task scheduler server can determine the amount of frames to be allocated to each render node according to the weight value assigned to each of the render nodes.

상기 렌더링 노드들 각각에 지정된 가중치는, 상기 렌더링 노드들 각각의 컴퓨팅 성능에 따라 지정된 가중치일 수 있다.The weight assigned to each of the rendering nodes may be a weight determined according to the computing capability of each of the rendering nodes.

상기 컴퓨팅 성능은, CPU 성능, CPU코어수, 메모리용량 중 적어도 하나를 포함할 수 있다.The computing capability may include at least one of a CPU performance, a number of CPU cores, and a memory capacity.

상기 분산 렌더링 시스템은, 상기 렌더링 노드들에 의하여 생성된 이미지 파일을 저장하는 스토리지를 더 포함할 수 있다.The distributed rendering system may further include a storage for storing the image file generated by the rendering nodes.

상기 렌더링 노드들 각각은, 할당된 프레임의 렌더링이 완료될 때마다 해당 프레임의 렌더링 소요 시간을 포함하는 렌더링 작업 정보를 상기 작업 스케줄러 서버로 전송하고, 상기 작업 스케줄러 서버는 상기 렌더링 작업 정보를 해당 이미지 파일의 메타데이터로서 상기 스토리지에 저장하고, 상기 저장된 렌더링 작업 정보를 이용하여 상기 전체 프레임들에 대한 렌더링완료 예상시간을 산출할 수 있다.Each of the rendering nodes transmits rendering job information including a rendering time of the corresponding frame to the job scheduler server every time rendering of the allocated frame is completed, and the job scheduler server transmits the rendering job information to the corresponding image And stores the calculated meta data in the storage as the meta data of the file, and calculates the expected rendering completion time for the entire frames using the stored rendering job information.

상기 렌더링 작업 정보는, 해당 프레임 번호, 해당 렌더링 노드의 컴퓨팅 성능 정보, 해당 이미지 파일의 포맷, 해당 이미지 파일의 크기 중 적어도 하나를 더 포함할 수 있다.The rendering job information may further include at least one of a frame number, computing performance information of the rendering node, a format of the image file, and a size of the image file.

상기 렌더링 노드들 각각은, 할당된 각 프레임의 렌더링이 완료될 때마다 생성되는 이미지 파일을 로컬 디스크에 저장하고, 할당된 모든 프레임들의 렌더링이 완료되면 상기 로컬 디스크에 저장된 렌더링 결과 이미지 파일들을 상기 스토리지로 전송할 수 있다.Each of the rendering nodes stores an image file generated each time rendering of each frame is completed on a local disk, and when the rendering of all the allocated frames is completed, the rendering result image files stored in the local disk are stored in the storage Lt; / RTI >

상기 작업 스케줄러 서버는, 상기 복수 개의 렌더링 노드들 중 적어도 하나의 렌더링 노드에 오류가 발생하여 해당 렌더링 노드에서 렌더링 작업이 수행되지 못하는 경우, 상기 해당 렌더링 노드에 할당된 프레임들 중 렌더링되지 않은 프레임들을 상기 복수 개의 렌더링 노드들에서 상기 해당 렌더링 노드를 제외한 렌더링 노드들에 할당할 수 있다.The job scheduler server may be configured to, when an error occurs in at least one render node among the plurality of render nodes and fail to perform a render operation at the corresponding render node, The rendering nodes may be allocated to the rendering nodes excluding the corresponding rendering nodes.

상기 복수 개의 렌더링 노드들 각각은, 어떤 프레임의 렌더링 중에 렌더링에 필요한 이미지가 지정된 파일경로에 존재하지 않거나, 어떤 프레임의 렌더링 결과 이미지 파일을 지정된 파일경로에 저장하는 것이 실패한 경우, 해당 프레임을 스킵하고 다음 프레임을 렌더링할 수 있다.Each of the plurality of rendering nodes skips the frame if the image required for rendering is not present in the specified file path during the rendering of a certain frame or fails to store the rendering result image file of the certain frame in the specified file path The next frame can be rendered.

상기 복수 개의 렌더링 노드들은 복수 개의 그룹들로 구분되고, 상기 복수 개의 그룹들 중 적어도 하나의 그룹은, 특정 사용자 그룹에 속한 사용자가 요청한 렌더링 작업을 수행하도록 상기 특정 사용자 그룹에 할당되거나, 특정 렌더링 작업 프로젝트를 위한 렌더링 작업을 수행하도록 상기 특정 렌더링 작업 프로젝트에 할당될 수 있다.Wherein the plurality of rendering nodes are divided into a plurality of groups and at least one group of the plurality of groups is assigned to the specific user group to perform a rendering operation requested by a user belonging to a specific user group, And may be assigned to the specific rendering task project to perform a rendering operation for the project.

상기된 본 발명에 의하면, 3D 그래픽 모델링 데이터를 렌더링하여 이미지 파일을 생성하는 복수 개의 렌더링 노드들과 복수 개의 렌더링 노드들 각각에 렌더링할 프레임들을 할당하는 작업 스케줄러 서버를 이용하여, 고가의 렌더링 전용장비를 이용하지 않고도 적은 비용으로 3D 콘텐츠 렌더링을 수행할 수 있다. 다만 본 발명의 효과는 상기된 바와 같은 효과로 한정되지 않으며, 이하의 설명으로부터 또 다른 기술적 효과가 도출될 수도 있다.According to the present invention, by using a task scheduler server that allocates frames to be rendered to a plurality of render nodes and a plurality of render nodes for rendering 3D graphic modeling data to generate an image file, It is possible to perform 3D content rendering at a low cost without using the 3D content. However, the effects of the present invention are not limited to those described above, and other technical effects may be derived from the following description.

도 1은 본 발명의 일 실시예에 따른 분산 렌더링 시스템의 구성을 나타낸다.
도 2는 사용자의 지정에 따라서 렌더링 노드들 각각에 렌더링할 프레임의 번호 또는 범위를 할당하고, 렌더링 노드들 각각이 그에 따라 렌더링 작업을 수행하는 과정을 보여주는 흐름도이다.
도 3은 렌더링 노드들 각각에 지정된 가중치에 따라서 렌더링할 프레임의 번호 또는 범위를 할당하고, 렌더링 노드들 각각이 그에 따라 렌더링 작업을 수행하는 과정을 보여주는 흐름도이다.
도 4는 렌더링 노드들 각각이 렌더링 작업 정보를 작업 스케줄러 서버로 전송하고, 이를 이용하여 작업 스케줄러 서버가 전체 프레임에 대한 렌더링완료 예상시간을 산출하는 과정을 보여주는 흐름도이다.
도 5는 렌더링 노드가 각 프레임의 렌더링이 완료될 때마다 생성되는 이미지 파일을 로컬 디스크에 저장하고, 모든 프레임들의 렌더링이 완료되면 렌더링 결과 이미지 파일들을 한꺼번에 스토리지에 저장하는 과정을 보여주는 흐름도이다.
도 6은 렌더링 노드에 오류가 발생한 경우 나머지 렌더링 노드들에서 오류가 발생한 렌더링 노드의 렌더링 작업이 수행되는 과정을 보여주는 흐름도이다.
도 7은 작업 스케줄러 서버가 관리하는 렌더링 노드들의 그룹 정보를 나타내는 테이블의 일 예를 보여준다.
1 shows a configuration of a distributed rendering system according to an embodiment of the present invention.
FIG. 2 is a flowchart illustrating a process of assigning a number or a range of a frame to be rendered to each of the rendering nodes according to a user's designation, and each rendering node performing a rendering operation accordingly.
FIG. 3 is a flowchart illustrating a process of allocating a number or a range of a frame to be rendered according to a weight assigned to each of the rendering nodes, and performing a rendering operation according to each of the rendering nodes.
FIG. 4 is a flowchart illustrating a process in which each of the rendering nodes transmits rendering job information to a job scheduler server, and the job scheduler server calculates a rendering completion time for the entire frame.
5 is a flowchart illustrating a process in which a rendering node stores an image file generated each time rendering of each frame is completed on a local disk, and stores rendering result image files in the storage at once when rendering of all frames is completed.
FIG. 6 is a flowchart illustrating a rendering process of a rendering node in which an error occurs in the remaining rendering nodes when an error occurs in the rendering node.
FIG. 7 shows an example of a table showing group information of rendering nodes managed by the job scheduler server.

이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the drawings. In the following description and the accompanying drawings, substantially the same components are denoted by the same reference numerals, and redundant description will be omitted. In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear.

도 1은 본 발명의 일 실시예에 따른 분산 렌더링 시스템의 구성을 나타낸다. 본 실시예에 따른 분산 렌더링 시스템은, 작업자 단말기(10), 작업 스케줄러 서버(20), 다수의 렌더링 노드들(30_1, 30_2, ..., 30_n), 스토리지(40)를 포함하여 이루어진다. 작업자 단말기(10), 작업 스케줄러 서버(20), 렌더링 노드들(30), 스토리지(40)는 하나의 네트워크 허브(network hub)를 통하여 연결될 수 있으며, 동일한 사무실 내 또는 동일한 건물 내에 위치할 수 있다.1 shows a configuration of a distributed rendering system according to an embodiment of the present invention. The distributed rendering system according to the present embodiment includes a worker terminal 10, a job scheduler server 20, a plurality of rendering nodes 30_1, 30_2, ..., 30_n, and a storage 40. [ The worker terminal 10, the job scheduler server 20, the rendering nodes 30 and the storage 40 can be connected through one network hub and can be located in the same office or in the same building .

렌더링 노드들(30)은 3D 그래픽 모델링 데이터를 프레임 별로 렌더링하여 이미지 파일을 생성하는 프로그램인 렌더링 프로그램이 설치될 수 있는 컴퓨팅 장치로서, 예컨대 퍼스널 컴퓨터(PC), 노트북 등의 휴대용 컴퓨터, 워크스테이션 등일 수 있다. 본 명세서에서 설명하는 렌더링 노드(30)의 기능 및 동작은 렌더링 노드(30)에 설치된 렌더링 프로그램의 기능 및 동작으로도 이해될 수 있다. The rendering nodes 30 are computing devices capable of installing a rendering program, which is a program for rendering 3D graphic modeling data frame by frame and generating an image file. The rendering nodes 30 may be a portable computer such as a personal computer (PC), a notebook computer, . The function and operation of the rendering node 30 described herein may also be understood as the function and operation of the rendering program installed in the rendering node 30. [

작업자 단말기(10)는 렌더링 작업을 수행할 3D 그래픽 모델링 데이터를 지정하여 작업 스케줄러 서버(20)에게 렌더링 작업을 지시하고, 작업 스케줄러 서버(20)를 제어하기 위한 컴퓨팅 장치로서, 역시 퍼스널 컴퓨터(PC), 노트북 등의 휴대용 컴퓨터, 워크스테이션 등일 수 있다. 렌더링 노드들(30) 중 하나가 작업자 단말기(10)로 이용될 수도 있다. The worker terminal 10 is a computing device for designating 3D graphic modeling data to be rendered and instructing the job scheduler server 20 to perform a rendering operation and controlling the job scheduler server 20, ), A portable computer such as a notebook computer, a workstation, and the like. One of the rendering nodes 30 may be used as the worker terminal 10.

작업 스케줄러 서버(20)는 작업자 단말기(10)로부터 어떤 3D 그래픽 모델링 데이터의 렌더링 작업이 요청되면, 렌더링할 전체 프레임들을 분배하여, 렌더링 노드들(30) 각각에 렌더링할 프레임들을 할당한다. 본 발명의 실시예에서, 작업 스케줄러 서버(20)는, 사용자의 지정에 따라서 렌더링 노드들(30) 각각에 렌더링할 프레임의 번호 또는 범위를 할당하거나, 렌더링 노드들(30) 각각에 지정된 가중치에 따라서 렌더링 노드들(30) 각각에 렌더링할 프레임의 번호 또는 범위를 할당할 수 있다.The task scheduler server 20 distributes all the frames to be rendered and allocates frames to be rendered to each of the render nodes 30 when a task of rendering 3D graphic modeling data is requested from the worker terminal 10. In the embodiment of the present invention, the task scheduler server 20 allocates a number or a range of frames to be rendered to each of the rendering nodes 30 according to a user's designation, or assigns a weight to a weight assigned to each of the rendering nodes 30 Thus, each of the rendering nodes 30 may be assigned a number or range of frames to be rendered.

스토리지(40)는 렌더링 노드들(30)로부터 렌더링 작업을 통하여 생성된 이미지 파일을 수신하여 저장한다. The storage 40 receives and stores the image file generated through the rendering operation from the rendering nodes 30.

이하에서는 도 2 내지 8을 더욱 참조하여 본 발명의 실시예들에 따른 분산 렌더링 시스템의 동작을 보다 구체적으로 설명한다.Hereinafter, the operation of the distributed rendering system according to the embodiments of the present invention will be described in more detail with reference to FIGS. 2 to 8. FIG.

본 발명의 일 실시예에서, 작업 스케줄러 서버(20)는 사용자의 지정에 따라서 렌더링 노드들(30) 각각에 렌더링할 프레임의 번호 또는 범위를 할당하고, 렌더링 노드들(30) 각각은 그에 따라 렌더링 작업을 수행할 수 있다. 도 2는 이러한 실시예에 따른 흐름도를 보여준다.In one embodiment of the present invention, the task scheduler server 20 assigns a number or a range of frames to be rendered to each of the render nodes 30 according to a user's designation, and each of the render nodes 30 accordingly You can do the work. Figure 2 shows a flow diagram according to this embodiment.

210단계에서, 작업자 단말기(10)는 렌더링 작업을 수행할 3D 그래픽 모델링 데이터를 지정하여 작업 스케줄러 서버(20)에게 렌더링 작업을 지시한다. 3D 그래픽 모델링 데이터는 사용자로부터 입력되는 것이거나, 스토리지(40)에 저장되어 있는 것일 수 있다. In operation 210, the worker terminal 10 designates the 3D graphic modeling data to be rendered and instructs the job scheduler server 20 to perform a rendering operation. The 3D graphic modeling data may be input from a user or stored in the storage 40.

220단계에서, 사용자는 작업자 단말기(10)를 통하여 렌더링 노드들(30)마다 프레임 번호 또는 프레임 범위를 지정한다. 전형적으로, 렌더링 노드들(30)은 CPU 성능, CPU코어수, 메모리용량 등과 같은 컴퓨팅 성능이 상이하므로, 사용자는 렌더링 노드들(30)의 컴퓨팅 성능에 따라 렌더링 노드들(30)에 서로 다른 양의 프레임을 지정할 수 있다. 예컨대, 컴퓨팅 성능이 상대적으로 낮은 첫 번째 렌더링 노드(30_1)에는 1번 프레임부터 50번 프레임까지의 50개 프레임이 지정되고, 컴퓨팅 성능이 상대적으로 두 번째 렌더링 노드(30_2)에는 51번 프레임부터 150번 프레임까지의 100개 프레임이 지정될 수 있다. In operation 220, the user designates a frame number or a frame range for each rendering node 30 through the worker terminal 10. Typically, the rendering nodes 30 differ in computing capabilities, such as CPU performance, CPU cores, memory capacity, etc., so that the user may have different amounts of different amounts of radiation to the rendering nodes 30 depending on the computing capabilities of the rendering nodes 30. [ Can be specified. For example, 50 frames from the 1st frame to the 50th frame are assigned to the first rendering node 30_1, which is relatively low in computing performance, and 50th frame is assigned to the second rendering node 30_2, 100 frames to the first frame can be designated.

220단계에서 지정된 렌더링 노드들(30)마다의 프레임 번호 또는 프레임 범위는 작업 스케줄러 서버(20)에 저장될 수 있다(225단계). 이때 프레임 번호 또는 프레임 범위 외에도 렌더링 작업 파일의 경로, 결과 이미지 포맷 등의 정보가 추가로 저장될 수 있다. 이렇게 저장된 정보는 다음 렌더링 작업 시에 다시 사용될 수 있다. The frame number or frame range for each rendering node 30 specified in step 220 may be stored in the job scheduler server 20 (step 225). At this time, in addition to the frame number or frame range, information such as the path of the rendering job file, the format of the result image, and the like can be additionally stored. This stored information can then be used again in the next rendering operation.

230단계에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30)마다 프레임 번호 또는 프레임 범위에 대한 정보와 함께 해당 3D 그래픽 모델링 데이터를 전송함으로써 렌더링 작업을 지시한다. In operation 230, the task scheduler server 20 transmits the corresponding 3D graphic modeling data together with information on a frame number or a frame range for each rendering node 30, thereby instructing a rendering operation.

240단계에서, 렌더링 노드들(30)은 작업 스케줄러 서버(20)로부터 지시된 렌더링 작업을 수행한다.In operation 240, the rendering nodes 30 perform rendering operations instructed from the job scheduler server 20.

250단계에서, 렌더링 노드들(30)은 자신에게 할당된 프레임들의 렌더링 작업이 완료되면 이미지 파일을 스토리지(40)로 전송 및 저장한다. In operation 250, the rendering nodes 30 transmit and store the image file to the storage 40 upon completion of the rendering operation of the frames allocated to the rendering nodes 30.

본 발명의 다른 일 실시예에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30) 각각에 지정된 가중치에 따라서 렌더링 노드들(30) 각각에 렌더링할 프레임의 번호 또는 범위를 할당하고, 렌더링 노드들(30) 각각은 그에 따라 렌더링 작업을 수행할 수 있다. 도 3은 이러한 실시예에 따른 흐름도를 보여준다.In another embodiment of the present invention, the task scheduler server 20 assigns a number or a range of frames to be rendered to each of the render nodes 30 according to a weight assigned to each of the render nodes 30, (30) can perform a rendering operation accordingly. Figure 3 shows a flow diagram according to this embodiment.

310단계에서, 작업자 단말기(10)는 렌더링 작업을 수행할 3D 그래픽 모델링 데이터를 지정하여 작업 스케줄러 서버(20)에게 렌더링 작업을 지시한다. 3D 그래픽 모델링 데이터는 사용자로부터 입력되는 것이거나, 스토리지(40)에 저장되어 있는 것일 수 있다. In operation 310, the worker terminal 10 designates the 3D graphic modeling data to be rendered and instructs the job scheduler server 20 to perform a rendering operation. The 3D graphic modeling data may be input from a user or stored in the storage 40.

320단계에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30)마다 가중치를 지정한다. 이때 렌더링 노드들(30)의 가중치들은 렌더링 노드들(30) 각각의 컴퓨팅 성능에 따라 지정될 수 있다. 여기서 컴퓨팅 성능은 CPU 성능, CPU코어수, 메모리용량 등을 포함할 수 있다. 예컨대, 렌더링 작업을 수행할 세 대의 렌더링 노드가 있고, CPU코어수, 메모리용량이 동일하고 CPU 속도가 각각 1.5GHz, 3GHz, 3GHz 인 경우, 각 렌더링 노드의 가중치는 CPU 속도에 상응하도록 1, 2, 2로 지정될 수 있다. 렌더링 노드들(30)의 가중치는 작업자 단말기(10)를 통하여 사용자가 지정할 수도 있고, 작업 스케줄러 서버(20)가 컴퓨팅 성능 정보를 렌더링 노드들(30)로부터 수집하거나 사용자로부터 입력받아서 렌더링 노드들(30)의 컴퓨팅 성능 정보에 따라 지정할 수도 있다. In operation 320, the task scheduler server 20 assigns weights to the rendering nodes 30. At this time, the weights of the rendering nodes 30 may be specified according to the computing capability of each of the rendering nodes 30. Here, the computing performance may include CPU performance, the number of CPU cores, the memory capacity, and the like. For example, if there are three rendering nodes to perform the rendering operation, and the number of CPU cores is equal to the memory capacity and the CPU speed is 1.5 GHz, 3 GHz, and 3 GHz, the weight of each rendering node is 1, 2 , ≪ / RTI > 2. The weights of the rendering nodes 30 may be specified by the user via the worker terminal 10 or may be collected by the task scheduler server 20 from the rendering nodes 30 or received from the rendering nodes 30, 30 according to the computation performance information.

320단계에서 지정된 렌더링 노드들(30)마다의 가중치 정보는 작업 스케줄러 서버(20)에 저장될 수 있다(325단계). 이때 가중치 정보 외에도 렌더링 작업 파일의 경로, 결과 이미지 포맷 등의 정보가 추가로 저장될 수 있다. 이렇게 저장된 정보는 다음 렌더링 작업 시에 다시 사용될 수 있다. The weight information for each render node 30 designated in step 320 may be stored in the task scheduler server 20 (step 325). At this time, in addition to the weight information, information such as a path of a rendering job file, a format of a result image, and the like may be additionally stored. This stored information can then be used again in the next rendering operation.

330단계에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30)의 가중치에 따라 렌더링 노드들(30)마다 프레임 번호 또는 프레임 범위를 결정한다. 가중치가 다른 렌더링 노드들에는 가중치에 따라 서로 다른 양의 프레임이 할당될 수 있다. 예컨대 위와 같이 가중치가 각각 1, 2, 2인 세 대의 렌더링 노드가 있을 때, 렌더링할 전체 프레임이 100개라면, 세 대의 렌더링 노드에는 각각 100*(1/5), 100*(2/5), 100*(2/5), 즉 20개, 40개, 40개의 프레임이 할당될 수 있다. 그러면 첫 번째 렌더링 노드는 1번~20번 프레임, 두 번째 렌더링 노드는 21번~60번 프레임, 세 번째 렌더링 노드는 61~100번 프레임이 렌더링할 프레임으로 결정될 수 있다.In step 330, the task scheduler server 20 determines a frame number or a frame range for each of the rendering nodes 30 according to the weight of the rendering nodes 30. Rendering nodes of different weights can be assigned different amounts of frames according to weights. For example, if there are three render nodes with weights of 1, 2, and 2 as above, if the total number of frames to be rendered is 100, then 100 * (1/5), 100 * (2/5) , 100 * (2/5), i.e., 20, 40, and 40 frames may be allocated. Then, the first rendering node may be determined to be a frame to be rendered by frames # 1 to # 20, the second rendering node to frames # 21 to # 60, and the third rendering node to be rendered frames # 61 to # 100.

340단계에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30)마다 프레임 번호 또는 프레임 범위에 대한 정보와 함께 해당 3D 그래픽 모델링 데이터를 전송함으로써 렌더링 작업을 지시한다. In operation 340, the task scheduler server 20 instructs rendering operations by transmitting corresponding 3D graphic modeling data together with frame number or frame range information for each of the rendering nodes 30.

350단계에서, 렌더링 노드들(30)은 작업 스케줄러 서버(20)로부터 지시된 렌더링 작업을 수행한다.In operation 350, the rendering nodes 30 perform the rendering operation instructed from the job scheduler server 20.

360단계에서, 렌더링 노드들(30)은 자신에게 할당된 프레임들의 렌더링 작업이 완료되면 이미지 파일을 스토리지(40)로 전송 및 저장한다. In step 360, the rendering nodes 30 transmit and store the image file to the storage 40 upon completion of the rendering operation of the frames allocated to the rendering nodes 30.

본 발명의 일 실시예에서, 렌더링 노드들(30) 각각은 자신에게 할당된 프레임의 렌더링이 완료될 때마다 해당 프레임의 렌더링 소요 시간을 포함하는 렌더링 작업 정보를 작업 스케줄러 서버(20)로 전송하고, 작업 스케줄러 서버(20)는 렌더링 노드들(30)로부터 수집된 렌더링 작업 정보를 해당 이미지 파일의 메타데이터로서 스토리지(40)에 저장하고, 저장된 렌더링 작업 정보를 이용하여 전체 프레임에 대한 렌더링완료 예상시간을 산출할 수 있다. 도 4는 이러한 실시예에 따른 흐름도를 보여준다.In one embodiment of the present invention, each rendering node 30 transmits rendering job information including the required rendering time of the frame to the job scheduler server 20 every time rendering of the frame assigned to the rendering nodes 30 is completed , The job scheduler server 20 stores the rendering job information collected from the rendering nodes 30 in the storage 40 as the metadata of the corresponding image file, The time can be calculated. Figure 4 shows a flow diagram according to this embodiment.

렌더링 노드(30)는 410단계에서 현재 프레임의 렌더링이 완료되면, 렌더링할 다음 프레임이 존재하는지 확인하고(413단계), 다음 프레임이 존재하면 410단계로 돌아가서 다음 프레임에 대한 렌더링을 수행한다.In step 413, the rendering node 30 determines whether there is a next frame to be rendered when rendering of the current frame is completed in step 410. If there is a next frame, the rendering node 30 returns to step 410 to render the next frame.

한편, 렌더링 노드(30)는 410단계에서 현재 프레임의 렌더링이 완료되면, 420단계에서 해당 프레임의 렌더링 작업 정보를 작업 스케줄러 서버(20)로 전송한다. 렌더링 작업 정보는, 해당 프레임 번호, 해당 프레임의 렌더링 소요 시간, 해당 렌더링 노드의 컴퓨팅 성능 정보, 해당 이미지 파일의 포맷, 해당 이미지 파일의 크기 등을 포함할 수 있다. When the rendering of the current frame is completed in step 410, the rendering node 30 transmits rendering job information of the corresponding frame to the job scheduler server 20 in step 420. The rendering job information may include a frame number, a rendering time required for the frame, computing performance information of the rendering node, a format of the image file, a size of the image file, and the like.

430단계에서, 렌더링 노드(30)로부터 렌더링 작업 정보를 수신한 작업 스케줄러 서버(20)는 수신한 렌더링 작업 정보를 해당 이미지 파일의 메타데이터로서 스토리지(40)에 저장한다. In operation 430, the job scheduler server 20 receiving the rendering job information from the rendering node 30 stores the received rendering job information in the storage 40 as metadata of the corresponding image file.

440단계에서, 작업 스케줄러 서버(20)는 스토리지(40)에 저장된 렌더링 작업 정보를 이용하여 렌더링 노드들(30)마다 아직 렌더링되지 않은 남은 프레임들의 렌더링 예상시간을 산출한다. 간단한 예로, 어떤 렌더링 노드에서 방금 렌더링 완료된 프레임의 렌더링 소요시간이 1시간이고 10개의 프레임이 남아 있다면, 그 렌더링 노드에서의 렌더링 예상시간은 10시간으로 산출될 수 있다. 어떤 렌더링 노드에서 이미 렌더링 완료된 프레임이 여러 개인 경우, 남은 프레임의 렌더링 예상시간은 여러 프레임들의 렌더링 소요시간들을 바탕으로 산출될 수도 있다.In operation 440, the task scheduler server 20 calculates a rendering expected time of remaining frames not yet rendered for each of the rendering nodes 30 using the rendering task information stored in the storage 40. [ In a simple example, if the rendering time of a frame that has just been rendered at one rendering node is one hour and ten frames remain, the rendering expected time at the rendering node may be calculated as 10 hours. If there are a plurality of frames that have already been rendered in a certain rendering node, the estimated rendering time of the remaining frames may be calculated based on rendering times of the frames.

450단계에서, 작업 스케줄러 서버(20)는 440단계에서 산출된 각 렌더링 노드의 렌더링 예상시간을 이용하여, 전체 프레임들에 대한 렌더링완료 예상시간을 산출한다. 전체 프레임들에 대한 렌더링완료 예상시간은, 각 렌더링 노드의 렌더링 예상시간 중 가장 큰 값으로 산출될 수 있다. 예컨대, 세 대의 렌더링 노드의 렌더링 예상시간이 10시간, 15시간, 20시간인 경우, 전체 프레임들에 대한 렌더링완료 예상시간은 20시간으로 산출될 수 있다. 산출된 렌더링완료 예상시간은 작업자 단말기(10)로 전송되어 사용자에게 보여질 수 있다.In operation 450, the task scheduler server 20 calculates a rendering completion time for all the frames using the rendering expectation time of each rendering node calculated in operation 440. The estimated rendering completion time for all the frames may be calculated as the largest rendering expected time of each rendering node. For example, if the rendering expectation times of three rendering nodes are 10 hours, 15 hours, and 20 hours, the expected rendering completion time for all the frames can be calculated to be 20 hours. The estimated rendering completion time may be transmitted to the operator terminal 10 and displayed to the user.

렌더링 작업 정보는 렌더링 노드들(30)에서 프레임이 렌더링될 때마다 스토리지(40)에 누적되어 저장된다. 따라서 상기된 440단계와 450단계는 프레임이 렌더링 완료될 때마다 또는 주기적으로 수행되어, 계속적으로 업데이트되는 렌더링완료 예상시간이 사용자에게 제공될 수 있다. The rendering job information is accumulated and stored in the storage 40 every time a frame is rendered in the rendering nodes 30. [ Accordingly, in steps 440 and 450, the rendering completion time may be provided to the user every time the frame is rendered or periodically performed.

렌더링 노드들(30)은 자신에게 할당된 각 프레임의 렌더링이 완료될 때마다 해당 이미지 파일을 스토리지(40)로 전송할 수 있으나, 실시예에 따라서는, 할당된 각 프레임의 렌더링이 완료될 때마다 생성되는 이미지 파일을 자신의 로컬 디스크(미도시)에 저장하고, 할당된 모든 프레임들의 렌더링이 완료되면 비로소 로컬 디스크에 저장된 렌더링 결과 이미지 파일들을 한꺼번에 스토리지(40)로 전송할 수도 있다. 이렇게 함으로써, 매 프레임마다 이미지 파일을 전송함으로써 유발되는 네트워크 부하를 경감할 수 있다. 도 5는 이러한 실시예에 따른 흐름도를 보여준다.The rendering nodes 30 may transmit the image file to the storage 40 each time rendering of each frame allocated to the rendering nodes 30 is completed. However, according to an embodiment, each time the rendering of each frame is completed The rendering image files stored in the local disk can be transferred to the storage 40 at once when the rendering of the all image frames is completed after storing the generated image file in its own local disk (not shown). By doing so, the network load caused by transmitting the image file every frame can be reduced. Figure 5 shows a flow diagram according to this embodiment.

렌더링 노드(30)는 510단계에서 현재 프레임의 렌더링이 완료되면, 렌더링할 다음 프레임이 존재하는지 확인하고(515단계), 다음 프레임이 존재하면 510단계로 돌아가서 다음 프레임에 대한 렌더링을 수행한다.When rendering of the current frame is completed in step 510, the rendering node 30 determines whether there is a next frame to be rendered (step 515). If there is a next frame, the rendering node 30 returns to step 510 to render the next frame.

한편, 렌더링 노드(30)는 510단계에서 현재 프레임의 렌더링이 완료되면, 520단계에서 해당 프레임의 렌더링 결과 이미지 파일을 자신의 로컬 디스크에 저장한다. If the rendering of the current frame is completed in step 510, the rendering node 30 stores the rendered image file of the corresponding frame in its local disk in step 520. [

상기 515단계에서 렌더링할 다음 프레임이 더 이상, 존재하지 않으면, 즉 자신에게 할당된 모든 프레임들의 렌더링이 완료되면, 530단계에서 렌더링 노드(30)는 로컬 디스크에 저장된 렌더링 결과 이미지 파일들을 불러와서 스토리지(40)로 전송한다.If the next frame to be rendered is no longer present in step 515, that is, when rendering of all the frames allocated to the rendering node is completed, the rendering node 30 loads the rendering result image files stored on the local disk in step 530, (40).

본 발명의 일 실시예에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30) 중 적어도 하나의 렌더링 노드에 오류가 발생하여 해당 렌더링 노드에서 렌더링 작업이 더 이상 수행되지 못하는 경우, 해당 렌더링 노드에 할당된 프레임들 중 아직 렌더링되지 않은 프레임들을 해당 렌더링 노드를 제외한 나머지 렌더링 노드들에 할당함으로써, 오류가 발생한 렌더링 노드에서 렌더링되지 않은 프레임들이 나머지 렌더링 노드들에서 렌더링되도록 할 수 있다. 도 6은 이러한 실시예에 따른 흐름도를 보여준다.In an exemplary embodiment of the present invention, when at least one rendering node of the rendering nodes 30 generates an error and the rendering job is no longer performed at the rendering node, the job scheduler server 20 The frames not yet rendered in the allocated frames may be allocated to the remaining render nodes other than the render node so that the frames not rendered in the failed render node may be rendered in the remaining render nodes. Figure 6 shows a flow diagram according to this embodiment.

렌더링 노드에 오류가 발생하여 렌더링 작업이 더 이상 수행되지 못하는 경우, 렌더링 프로그램이 이를 감지하여 작업 스케줄러 서버(20)로 렌더링 오류 발생을 보고할 수 있다. 또는 앞서 설명한 바와 같이 작업 스케줄러 서버(20)가 렌더링 노드로부터 프레임의 렌더링이 완료될 때마다 렌더링 작업 정보를 수신하는 경우, 다음 프레임의 렌더링 예상시간보다 일정 시간이 경과하도록 렌더링 작업 정보가 수신되지 않는다면 해당 렌더링 노드에서 렌더링 오류가 발생한 것으로 판단할 수도 있다. If the rendering operation is no longer performed due to an error in the rendering node, the rendering program can detect this and report the occurrence of rendering error to the job scheduler server 20. Alternatively, if the job scheduler server 20 receives the rendering job information every time the rendering of the frame is completed from the rendering node as described above, if rendering job information is not received so that a certain time elapses from the rendering expectation time of the next frame It may be determined that a rendering error has occurred at the corresponding rendering node.

610단계에서, 렌더링 노드들(30) 중 어떤 렌더링 노드에 오류가 발생하면, 620단계에서 작업 스케줄러 서버(20)는 해당 렌더링 노드에서 아직 렌더링되지 않은 프레임들을 확인한다. If an error occurs in a rendering node among rendering nodes 30 in step 610, the job scheduler server 20 checks frames not yet rendered on the rendering node in step 620.

630단계에서, 작업 스케줄러 서버(20)는 해당 렌더링 노드에서 아직 렌더링되지 않은 프레임들에 대하여, 해당 렌더링 노드를 제외한 나머지 렌더링 노드들마다 할당할 프레임 번호 또는 범위를 결정한다. 이때 나머지 렌더링 노드들에 렌더링할 프레임들이 균일하게 할당되도록 결정될 수도 있다. 예컨대, 4대의 렌더링 노드가 렌더링 작업을 수행하던 중 하나의 렌더링 노드에 오류가 발생하고, 해당 렌더링 노드에서 렌더링할 프레임이 30개 남아 있다면, 나머지 3대의 렌더링 노드에 10개의 프레임이 할당되도록 각 렌더링 노드마다 프레임 번호 또는 프레임 범위가 결정될 수 있다. 혹은, 나머지 렌더링 노드들의 가중치에 따라서 렌더링할 프레임이 서로 다른 양으로 할당되도록 결정될 수도 있다. 위에서 든 예의 경우에, 나머지 3대의 렌더링 노드의 가중치가 각각 1, 2, 2인 경우, 30개의 프레임들이 나머지 세 대의 렌더링 노드들에 6개, 12개, 12개로 분배되도록 각 렌더링 노드마다 프레임 번호 또는 범위가 결정될 수 있다.In operation 630, the task scheduler server 20 determines a frame number or a range to be allocated to each of the rendering nodes other than the rendering node, with respect to the frames that have not yet been rendered in the rendering node. At this time, frames to be rendered may be determined to be uniformly allocated to the remaining rendering nodes. For example, if one of the rendering nodes performs an error while one of the rendering nodes generates an error, and there are 30 remaining frames to be rendered at the corresponding rendering node, A frame number or frame range may be determined for each node. Alternatively, it may be determined that frames to be rendered are allocated in different amounts according to the weights of the remaining rendering nodes. In the above example, when the weights of the remaining three render nodes are 1, 2, and 2, 30 frames are distributed to 6, 12, and 12, respectively, in the remaining three render nodes. Or range may be determined.

640단계에서, 작업 스케줄러 서버(20)는 630단계에서 결정된 프레임 번호 또는 프레임 범위의 정보와 함께 해당 3D 그래픽 모델링 데이터를 전송함으로써 렌더링 작업을 지시한다. In operation 640, the task scheduler server 20 transmits the 3D graphic modeling data together with the frame number or frame range information determined in operation 630, thereby instructing the rendering operation.

본 발명의 일 실시예에서, 렌더링 노드(30)는 어떤 프레임의 렌더링 중에 렌더링 작업 데이터에 오류가 발생하면, 렌더링 작업을 종료하는 것이 아니라, 해당 프레임을 스킵하고 다음 프레임을 렌더링할 수 있다. 렌더링 작업 데이터의 오류는, 어떤 프레임의 렌더링에 필요한 이미지가 네트워크 상의 지정된 파일경로에 존재하지 않거나, 렌더링 결과 이미지 파일을 네트워크 상의 지정된 파일경로에 저장하는 것이 실패하는 경우를 의미한다. 지정된 파일경로에 저장하는 것이 실패하는 경우는, 예컨대 파일경로의 접근권한 또는 네트워크 과부하 때문일 수 있다. In an embodiment of the present invention, if an error occurs in the rendering operation data during rendering of a frame, the rendering node 30 may skip the frame and render the next frame instead of terminating the rendering operation. An error in rendering job data means that the image required to render a frame does not exist in the specified file path on the network or fails to save the rendering result image file in the specified file path on the network. Failure to save to the specified file path may be due, for example, to an access right in the file path or network overload.

또한, 렌더링 노드(30)는 어떤 프레임의 렌더링에 필요한 이미지가 네트워크 상의 지정된 파일경로에 존재하지 않는 경우, 작업 스케줄러 서버(20)로부터의 작업지시정보에 포함되어 있는 파일경로들을 검색하여, 필요한 이미지를 찾아서 렌더링을 수행하거나 찾은 이미지를 지정된 파일경로에 복사할 수도 있다. The rendering node 30 searches the file paths included in the work instruction information from the job scheduler server 20 when the image necessary for rendering a frame does not exist in the specified file path on the network, And perform rendering or copy the found image to the specified file path.

본 발명의 일 실시예에서, 작업 스케줄러 서버(20)는 렌더링 노드들(30)은 복수 개의 그룹들로 구분하여 관리할 수 있다. In one embodiment of the present invention, the task scheduler server 20 can manage rendering nodes 30 by dividing them into a plurality of groups.

예컨대 렌더링 노드들(30)은 이른바 공용풀(public pool)과 전용풀(private pool)로 구분될 수 있다. 분산 렌더링 시스템에 처음 연결된 컴퓨팅 장비는 우선 공용풀이라는 기본 그룹에 속하도록 할 수 있다. 공용풀에 속한 렌더링 노드는 작업 스케줄러 서버(20)가 분배하는 모든 렌더링 작업을 수행하며, 먼저 부여된 렌더링 작업을 우선적으로 수행할 수 있다.For example, rendering nodes 30 may be divided into so-called public pools and private pools. A computing device that is initially connected to a distributed rendering system can first be made to belong to a base group called a public pool. The rendering node belonging to the public pool performs all the rendering tasks distributed by the job scheduler server 20, and can perform the rendering operation given first.

전용풀은 특정 사용자 그룹에 속한 사용자가 요청한 렌더링 작업을 수행하도록 특정 사용자 그룹에 할당된 렌더링 노드들의 그룹을 포함하거나, 특정 렌더링 작업 프로젝트를 위한 렌더링 작업을 수행하도록 특정 렌더링 작업 프로젝트에 할당된 렌더링 노드들의 그룹을 포함할 수 있다. 여기서 사용자 그룹은 작업자 단말기(10)를 통하여 작업 스케줄러 서버(20)에 접속하기 위한 사용자 아이디의 집합에 대응될 수 있고, 렌더링 작업 프로젝트는 렌더링 작업을 수행할 콘텐츠에 대응될 수 있다. The balloon may include a group of rendering nodes assigned to a particular user group to perform a rendering operation requested by a user belonging to a particular user group, or may include a group of rendering nodes assigned to a particular rendering task, Group. Here, the user group may correspond to a set of user IDs for connecting to the job scheduler server 20 through the worker terminal 10, and the rendering job project may correspond to the content to be rendered.

도 7은 작업 스케줄러 서버(20)가 관리하는 렌더링 노드들(20)의 그룹 정보를 나타내는 테이블의 일 예를 보여준다. FIG. 7 shows an example of a table showing group information of the rendering nodes 20 managed by the job scheduler server 20. FIG.

도 7을 참조하면, 100대의 렌더링 노드들이 존재하고, 1번~80번 렌더링 노드들은 전용풀에 속하며, 81번~100번 렌더링 노드들은 공용풀에 속한다. Referring to FIG. 7, there are 100 rendering nodes, rendering nodes # 1 to # 80 belong to the sparse pool, and the rendering nodes # 81 to # 100 belong to the common pool.

예컨대 사용자 그룹 A는 사용자 아이디 A-1, A-2, ..., A-m의 사용자 아이디를 가지는 m명의 사용자를 포함하며, 사용자 그룹 B는 B-1, B-2, ..., B-n의 사용자 아이디를 가지는 n명의 사용자를 포함한다. 전용풀에 속하는 1번~80번 렌더링 노드들 중 일부 렌더링 노드들(예컨대 1~40번 렌더링 노드들)은 사용자 그룹 A에 할당되고, 나머지 일부 렌더링 노드들(예컨대 41번~80번 렌더링 노드들)은 사용자 그룹 B에 할당된다. 사용자 그룹 A에 속한 사용자가 사용자 아이디로 작업자 단말기(10)를 통하여 작업 스케줄러 서버(20)에 접속하여 렌더링 작업을 지시하면, 작업 스케줄러 서버(20)는 렌더링 작업을 1~40번 렌더링 노드들에 분배하여 할당한다. 사용자 그룹 B에 속한 사용자가 사용자 아이디로 작업자 단말기(10)를 통하여 작업 스케줄러 서버(20)에 접속하여 렌더링 작업을 지시하면, 작업 스케줄러 서버(20)는 렌더링 작업을 41~80번 렌더링 노드들에 분배하여 할당한다. 공용풀에 속한 렌더링 노드가 다른 렌더링 작업에 의하여 선점되어 있지 않으면, 렌더링 작업은 공용풀에 속한 해당 렌더링 노드에 분배될 수도 있다. For example, user group A includes m users having user IDs of user IDs A-1, A-2, ..., Am, and user group B includes users of B-1, B-2, Includes n users with a user ID. Some rendering nodes (e.g., rendering nodes 1 to 40) of rendering nodes 1 to 80 belonging to the MFP are allocated to user group A, and some of the rendering nodes (e.g., rendering nodes 41 to 80) Is assigned to user group B. < RTI ID = When a user belonging to the user group A accesses the job scheduler server 20 through the worker terminal 10 with a user ID and instructs a rendering job, the job scheduler server 20 transmits the rendering job to the rendering nodes 1 to 40 And allocates them. When a user belonging to the user group B accesses the job scheduler server 20 via the worker terminal 10 with a user ID and instructs a rendering job, the job scheduler server 20 transmits the rendering job to the rendering nodes 41 to 80 And allocates them. If the rendering node belonging to the public pool is not preempted by another rendering operation, the rendering operation may be distributed to the corresponding rendering node belonging to the public pool.

예컨대 렌더링 작업 프로젝트로서, '타요' 프로젝트와 '뽀로로' 프로젝트가 있는 경우, 전용풀에 속하는 1번~80번 렌더링 노드들 중 일부 렌더링 노드들(예컨대 1~30번 렌더링 노드들)은 '타요' 프로젝트에 할당되고, 나머지 일부 렌더링 노드들(예컨대 31번~80번 렌더링 노드들)은 '뽀로로' 프로젝트에 할당된다. 사용자가 작업자 단말기(10)를 통하여 작업 스케줄러 서버(20)로 '타요' 프로젝트에 해당하는 렌더링 작업을 지시하면, 작업 스케줄러 서버(20)는 해당 렌더링 작업을 1~30번 렌더링 노드들에 분배하여 할당한다. 사용자가 작업자 단말기(10)를 통하여 작업 스케줄러 서버(20)로 '뽀로로' 프로젝트에 해당하는 렌더링 작업을 지시하면, 작업 스케줄러 서버(20)는 해당 렌더링 작업을 31~80번 렌더링 노드들에 분배하여 할당한다. 공용풀에 속한 렌더링 노드가 다른 렌더링 작업에 의하여 선점되어 있지 않으면, 렌더링 작업은 공용풀에 속한 해당 렌더링 노드에 분배될 수도 있다.For example, if there are a 'Too' project and a 'Pororo' project as a rendering work project, some of the rendering nodes (for example, rendering nodes 1 to 30) And some remaining render nodes (e.g., render nodes 31 to 80) are assigned to the 'Pororo' project. When the user instructs the job scheduler server 20 via the worker terminal 10 to perform a rendering operation corresponding to the 'ride' project, the job scheduler server 20 distributes the rendering job to the rendering nodes 1 to 30 . When the user instructs the job scheduler server 20 to perform a rendering operation corresponding to the 'Pororo' project through the worker terminal 10, the job scheduler server 20 distributes the rendering job to the rendering nodes 31 to 80 . If the rendering node belonging to the public pool is not preempted by another rendering operation, the rendering operation may be distributed to the corresponding rendering node belonging to the public pool.

한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.The above-described embodiments of the present invention can be embodied in a general-purpose digital computer that can be embodied as a program that can be executed by a computer and operates the program using a computer-readable recording medium. The computer-readable recording medium includes a storage medium such as a magnetic storage medium (e.g., ROM, floppy disk, hard disk, etc.), optical reading medium (e.g., CD ROM,

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The present invention has been described with reference to the preferred embodiments. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.

Claims (11)

각각이, 렌더링 프로그램을 이용하여 3D 그래픽 모델링 데이터를 프레임 별로 렌더링하여 이미지 파일을 생성하는 복수 개의 렌더링 노드들; 및
렌더링할 전체 프레임들을 분배하여, 상기 복수 개의 렌더링 노드들 각각에 렌더링할 프레임들을 할당하는 작업 스케줄러 서버를 포함하고,
상기 작업 스케줄러 서버는, 사용자의 지정에 따라서 상기 렌더링 노드들 각각에 렌더링할 프레임의 번호 또는 범위를 할당하거나, 상기 렌더링 노드들 각각에 지정된 가중치에 따라서 상기 렌더링 노드들 각각에 렌더링할 프레임의 번호 또는 범위를 할당하는 것을 특징으로 하는 분산 렌더링 시스템.
A plurality of rendering nodes each rendering 3D graphic modeling data frame by frame using a rendering program to generate an image file; And
And a task scheduler for distributing all frames to be rendered and assigning frames to be rendered to each of the plurality of render nodes,
The job scheduler server allocates a number or a range of a frame to be rendered to each of the render nodes according to a user's designation or a number of a frame to be rendered in each of the render nodes according to a weight assigned to each of the render nodes, And a range is assigned.
제1항에 있어서,
상기 작업 스케줄러 서버는, 상기 렌더링 노드들 각각에 지정된 가중치에 따라서 각 렌더링 노드에 할당할 프레임의 양을 결정하는 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 1,
Wherein the task scheduler server determines an amount of frames to be allocated to each render node according to a weight value assigned to each of the render nodes.
제1항에 있어서,
상기 렌더링 노드들 각각에 지정된 가중치는, 상기 렌더링 노드들 각각의 컴퓨팅 성능에 따라 지정된 가중치인 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 1,
Wherein the weight assigned to each of the rendering nodes is a weight determined according to the computing capability of each of the rendering nodes.
제3항에 있어서,
상기 컴퓨팅 성능은, CPU 성능, CPU코어수, 메모리용량 중 적어도 하나를 포함하는 것을 특징으로 하는 분산 렌더링 시스템.
The method of claim 3,
Wherein the computing capability comprises at least one of a CPU performance, a number of CPU cores, and a memory capacity.
제1항에 있어서,
상기 렌더링 노드들에 의하여 생성된 이미지 파일을 저장하는 스토리지를 더 포함하는 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 1,
And a storage for storing the image file generated by the rendering nodes.
제5항에 있어서,
상기 렌더링 노드들 각각은, 할당된 프레임의 렌더링이 완료될 때마다 해당 프레임의 렌더링 소요 시간을 포함하는 렌더링 작업 정보를 상기 작업 스케줄러 서버로 전송하고,
상기 작업 스케줄러 서버는 상기 렌더링 작업 정보를 해당 이미지 파일의 메타데이터로서 상기 스토리지에 저장하고, 상기 저장된 렌더링 작업 정보를 이용하여 상기 전체 프레임들에 대한 렌더링완료 예상시간을 산출하는 것을 특징으로 하는 분산 렌더링 시스템.
6. The method of claim 5,
Each of the rendering nodes transmits rendering job information including a rendering time required for the frame to the job scheduler server every time rendering of the allocated frame is completed,
Wherein the job scheduler server stores the rendering job information in the storage as meta data of the image file and calculates a rendering completion estimated time for the entire frames using the stored rendering job information. system.
제6항에 있어서,
상기 렌더링 작업 정보는, 해당 프레임 번호, 해당 렌더링 노드의 컴퓨팅 성능 정보, 해당 이미지 파일의 포맷, 해당 이미지 파일의 크기 중 적어도 하나를 더 포함하는 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 6,
Wherein the rendering task information further includes at least one of a frame number, computing performance information of the rendering node, a format of the image file, and a size of the image file.
제5항에 있어서,
상기 렌더링 노드들 각각은, 할당된 각 프레임의 렌더링이 완료될 때마다 생성되는 이미지 파일을 로컬 디스크에 저장하고, 할당된 모든 프레임들의 렌더링이 완료되면 상기 로컬 디스크에 저장된 렌더링 결과 이미지 파일들을 상기 스토리지로 전송하는 것을 특징으로 하는 분산 렌더링 시스템.
6. The method of claim 5,
Each of the rendering nodes stores an image file generated each time rendering of each frame is completed on a local disk, and when the rendering of all the allocated frames is completed, the rendering result image files stored in the local disk are stored in the storage To the distributed rendering system.
제1항에 있어서,
상기 작업 스케줄러 서버는, 상기 복수 개의 렌더링 노드들 중 적어도 하나의 렌더링 노드에 오류가 발생하여 해당 렌더링 노드에서 렌더링 작업이 수행되지 못하는 경우, 상기 해당 렌더링 노드에 할당된 프레임들 중 렌더링되지 않은 프레임들을 상기 복수 개의 렌더링 노드들에서 상기 해당 렌더링 노드를 제외한 렌더링 노드들에 할당하는 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 1,
The job scheduler server may be configured to, when an error occurs in at least one render node among the plurality of render nodes and fail to perform a render operation at the corresponding render node, Wherein the plurality of rendering nodes are allocated to the rendering nodes excluding the corresponding rendering nodes.
제1항에 있어서,
상기 복수 개의 렌더링 노드들 각각은, 어떤 프레임의 렌더링 중에 렌더링에 필요한 이미지가 지정된 파일경로에 존재하지 않거나, 어떤 프레임의 렌더링 결과 이미지 파일을 지정된 파일경로에 저장하는 것이 실패한 경우, 해당 프레임을 스킵하고 다음 프레임을 렌더링하는 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 1,
Each of the plurality of rendering nodes skips the frame if the image required for rendering is not present in the specified file path during rendering of a frame or fails to store a rendering result image file of a certain frame in the specified file path And the next frame is rendered.
제1항에 있어서,
상기 복수 개의 렌더링 노드들은 복수 개의 그룹들로 구분되고, 상기 복수 개의 그룹들 중 적어도 하나의 그룹은, 특정 사용자 그룹에 속한 사용자가 요청한 렌더링 작업을 수행하도록 상기 특정 사용자 그룹에 할당되거나, 특정 렌더링 작업 프로젝트를 위한 렌더링 작업을 수행하도록 상기 특정 렌더링 작업 프로젝트에 할당되는 것을 특징으로 하는 분산 렌더링 시스템.
The method according to claim 1,
Wherein the plurality of rendering nodes are divided into a plurality of groups and at least one group of the plurality of groups is assigned to the specific user group to perform a rendering operation requested by a user belonging to a specific user group, And is assigned to the specific rendering task project to perform a rendering operation for the project.
KR1020140170301A 2014-12-02 2014-12-02 Distributed Rendering System KR101660514B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140170301A KR101660514B1 (en) 2014-12-02 2014-12-02 Distributed Rendering System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140170301A KR101660514B1 (en) 2014-12-02 2014-12-02 Distributed Rendering System

Publications (2)

Publication Number Publication Date
KR20160066228A true KR20160066228A (en) 2016-06-10
KR101660514B1 KR101660514B1 (en) 2016-09-29

Family

ID=56190587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140170301A KR101660514B1 (en) 2014-12-02 2014-12-02 Distributed Rendering System

Country Status (1)

Country Link
KR (1) KR101660514B1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190092922A (en) * 2018-01-31 2019-08-08 타임시스템(주) Customized Motion Graphic Video Production System
KR102081364B1 (en) * 2019-11-27 2020-02-25 (주)비디오몬스터 Variable distributed rendering system for editing video based on cloud and method thereof
KR102238670B1 (en) * 2019-10-31 2021-04-09 박재범 Distributed rendering system and method using idle resource of users
KR102274610B1 (en) * 2020-12-24 2021-07-07 (주)비디오몬스터 System for distributed rendering video based on cloud and method for auto scaling threrof
WO2022103225A1 (en) * 2020-11-13 2022-05-19 삼성전자 주식회사 Electronic device and image rendering method of electronic device
WO2022168996A1 (en) * 2021-02-02 2022-08-11 박재범 Distributed rendering system and method for distributed rendering using idle resources of user
KR20220147381A (en) * 2021-04-27 2022-11-03 (주)이머시브캐스트 Distributed rendering based cloud vr device
US11935149B2 (en) 2020-11-13 2024-03-19 Samsung Electronics Co., Ltd Electronic device and image rendering method thereof for adjusting frame rate

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572951B (en) * 2017-03-08 2021-08-17 星际空间(天津)科技发展有限公司 Mapping data three-dimensional display system based on geographic information

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233600A (en) * 2001-12-03 2003-08-22 Ziosoft Inc Volume rendering processing method, volume rendering processing system, computer and program
JP2006520026A (en) * 2002-12-31 2006-08-31 モトローラ・インコーポレイテッド System and method for rendering content on multiple devices
JP2009181482A (en) * 2008-01-31 2009-08-13 Fuji Television Network Inc Image processing system and image processing method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233600A (en) * 2001-12-03 2003-08-22 Ziosoft Inc Volume rendering processing method, volume rendering processing system, computer and program
JP2006520026A (en) * 2002-12-31 2006-08-31 モトローラ・インコーポレイテッド System and method for rendering content on multiple devices
JP2009181482A (en) * 2008-01-31 2009-08-13 Fuji Television Network Inc Image processing system and image processing method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
이인 외 4명, ‘특정 목적 렌더러에 특화된 분산 렌더링 관리 시스템의 설계 및 구현’, 한국콘텐츠학회논문지 제12권 제2호, 2012.2, 60-68 (9 pages)* *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190092922A (en) * 2018-01-31 2019-08-08 타임시스템(주) Customized Motion Graphic Video Production System
KR102238670B1 (en) * 2019-10-31 2021-04-09 박재범 Distributed rendering system and method using idle resource of users
KR102081364B1 (en) * 2019-11-27 2020-02-25 (주)비디오몬스터 Variable distributed rendering system for editing video based on cloud and method thereof
WO2022103225A1 (en) * 2020-11-13 2022-05-19 삼성전자 주식회사 Electronic device and image rendering method of electronic device
US11935149B2 (en) 2020-11-13 2024-03-19 Samsung Electronics Co., Ltd Electronic device and image rendering method thereof for adjusting frame rate
KR102274610B1 (en) * 2020-12-24 2021-07-07 (주)비디오몬스터 System for distributed rendering video based on cloud and method for auto scaling threrof
WO2022139150A1 (en) * 2020-12-24 2022-06-30 (주)비디오몬스터 Cloud-based distributed video rendering system, and autoscaling method thereof
WO2022168996A1 (en) * 2021-02-02 2022-08-11 박재범 Distributed rendering system and method for distributed rendering using idle resources of user
KR20220147381A (en) * 2021-04-27 2022-11-03 (주)이머시브캐스트 Distributed rendering based cloud vr device

Also Published As

Publication number Publication date
KR101660514B1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
KR101660514B1 (en) Distributed Rendering System
US10360199B2 (en) Partitioning and rebalancing data storage
US8826272B2 (en) Planning a reliable migration in a limited stability virtualized environment
KR20190020073A (en) Acceleration resource processing method and apparatus, and network function virtualization system
US11544100B2 (en) Hardware acceleration method and related device
US20180018197A1 (en) Virtual Machine Resource Allocation Method and Apparatus
JP5352890B2 (en) Computer system operation management method, computer system, and computer-readable medium storing program
WO2016184037A1 (en) Service availability management method and apparatus, and network function virtualization infrastructure thereof
CN104965757A (en) Virtual machine live migration method, virtual machine migration management apparatus, and virtual machine live migration system
CN106201481A (en) Assembly management method and apparatus in application development system
CA3073519C (en) Scalable techniques for executing custom algorithms on media items
JP6003590B2 (en) Data center, virtual system copy service providing method, data center management server, and virtual system copy program
CN109446062B (en) Method and device for debugging software in cloud computing service
US20140280473A1 (en) Managing web services using a reverse proxy
US20140380089A1 (en) Method and apparatus for recovering failed disk in virtual machine
JP2016009341A (en) Virtual machine arrangement system and arrangement method, and computer program
US11340952B2 (en) Function performance trigger
CN110347473B (en) Method and device for distributing virtual machines of virtualized network elements distributed across data centers
JP2015204025A (en) Information processing system, arrangement device, arrangement method and program
KR20180000204A (en) Method, apparatus and system for providing auto scale
CN108958888A (en) The data processing method and processing system of electronic equipment
US10331651B2 (en) Updating web files based on detected legacy model file changes
CN115098259A (en) Resource management method and device, cloud platform, equipment and storage medium
CN113692737A (en) Method for signalling output sub-picture layer sets
JP2020140246A (en) Information processing device, information processing system and information processing program

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant