VR 특징

사용자 주변환경을 차단

사용자 감각정보를 조작

몰입감 제공이 핵심





VR 유형 및 전달방식

몰입형 VR (Immersive VR) : 
> VR 영화


시뮬레이션형 가상현실(Simulation VR)

> Video Game


투명형 가상현실 (Projection VR, Artificial VR)

> 클리프 행어, 스타워즈, 쥬라식 파크


데스크탑형 가상현실(Garage VR, Homebrew VR, Desktop VR)





VR 분류 체험방식

시뮬레이션 : 가상의 환경을 만들어서 경험하게 하는 것

> ex) 테마파크, 박물관 , 비디오 게임, 의료수술 시뮬레이션,

> 군사 시뮬레이션, 분자구조 시뮬레이션


화상회의 시스템

> ex) 재택진료, 재택근무, 번역 시스템.


가상현실과 로보틱스의 결합

> ex) 텔레 로보틱스(Tele Robotics), 텔레프리센스(Telepresence)

> 텔리 이그지턴스(Tele Existence)

> 우주선 외부나 화성에 로봇팔을 설치, 우주선 내에서 작업




VR 다양한 응용분야


국방 / 의료 / 전자상거래 / 교육(CBT) / 데이터 시각화 /디자인 & 인체공학 / 문화체험 / 건설, 인테리어

(www.vr.co.kr)


기존 VR 실패이유


무엇을 만들까 (Content)를 고민하지 않고...

기술 구현도만 고민함!!

"와 진짜 리얼해"를 넘어

Feel과 Value...가치를 줄 수 있는것을 고민해야함



VR의 한계


인지 부조화

> 시각과 정전기관 후각 촉각등의 부조화


피해 의식

> 사용자 안보임 절단의식

> 이동 불가 피해 의식


후유증

> 폭력 성향

> 시각 장애

> 플래시 장애

> 구토 멀미 어지러움 등



'가상현실[ VR] 이해와 활용' 카테고리의 다른 글

AR이란, AR의 역사 및 특징  (0) 2018.03.10
VR 가상현실 활용과 개념  (0) 2018.03.10

VR

Virtual 가상의

Reality  현실


실제가 아닌 부분들로 현실의 세상을 구현하는 것.

인간의 감각을 바탕으로 상상 속에서 현장감을 느끼게 해주는 공간


가상현실은 컴퓨터 등을 사용한 인공저긴 기술로 만들어낸 실제와 유사하지만 실제가 아닌 어떤 특정한 환경이나 상황 혹은 기술.



이론기술

가상현실 이론

- 스테레오 스코피

- 인간이 원근을 느끼는 원리는 양 눈의 시각차에서 온다.

- 실제적으로 평면을 바라보지만 양눈의 정보 조합으로 입체를 인지한다.

- 양눈의 시각 정보 조각과 양쪽 귀의 청각 정보 조각을 통해 인간은 입체 공간을 느낄 수 있다.










이론적용

VR 기술 종류


- 적청안경기술

- 편광필터차단

- 셔터안경기술(3D TV에 적용, 왼쪽 눈과 오른쪽 눈에 다른 프레임을 빠른 속도로 Projection 하는 방식)

- 매직아이기술

- 시차방벽기술(필터에 셔터를 적용 - 전기를 사용, 비쌈)

- 렌즈굴절기술(렌즈의 굴곡을 바꿈)




VR 역사

- 1938 프랑스의 극작가 앙토넹 아르토의 잔혹 연극론 :

무대가 관객을 몰입시키는 가상현실의 공간 (La realite virtuelle)이 되어야 된다고 무대 장치등의 개념 묘사


- 2차 세계대전 신무기와 신훈련 기술에 대한 공모전 :

가상현실을 통한 이미지 트레이닝 기술에 대한 개념 마련


- 가상현실기기

센소라마(Sensorama)

1957년 모턴 하일리그(Morton Heilig)에 의해 처음 양눈에 다른 영사물을 비춰 입체감을 느끼게 한 센소라마 시뮬레이터 개발


- 근대의 Mount Display 기기

> 1968년 유타대 이반 서덜랜드(Ivan Sutherland)와 밥스프롤(Bob Sproull)

> 최초의 머리에 쓰는 가상 기기 개발

> CRT 소형 모니터로 눈에 비춰 전자적영상을 제공

> 대형장비로 천장에 붙여서 사용

> 위치 이동이 어려운 단점


-최초의 HMD 기기

> 1986년 NASA에서 개발

> 우주인 훈련용 HMD 시스템인 바이브드

(VIVED, Virtual Visual Environment Display)


- 최초의 VHMD 기기

> NASA 가상환경 워크스테이션

> The Virtual Interface Environment Worstation



가상현실의 발전

- 군사용 발전

- 게임용 발전

- 닌텐도 1995 버추얼 보이(Virtual Boy)

> 인지 부조화 현상등이 보고 실패

> 일체감만있지 몰입감 없음


가상현실 기술의 발달

- 그래픽 엔진발달

> 리얼리티 엔진(Reality Engine)


- 기기발달

> LCD -> LED -> OLED

> HMD(Head Mounted Visual Display)


- 모델링의 발달
> 가상현실 저작도구(3D Modeling and World-build Software)


- 3차원 입력장치(3D Input Device) 발달

> 모캡

> 3차원 디자인

'가상현실[ VR] 이해와 활용' 카테고리의 다른 글

AR이란, AR의 역사 및 특징  (0) 2018.03.10
VR 유형 및 응용분야, 한계  (0) 2018.03.10

1) 함수 function 이용하기

 

#!/bin/bash
function sum_x_y
{
echo "sum_$1_${2}"
  for (( i=$1, sum=0 ; i<=$2; i++ ))
     do
        (( sum += i ))
     done
  echo "sum_x_y: sum: $sum"
  return $sum
}


echo
rst=$(sum_x_y 1 10)
echo "result of sum_1_10:  $rst"
echo
rst=$(sum_x_y 1 100)
echo "result of sum_1_100:  $rst"

 

=> $?은 1byte 255이상을 넘어갈 수 없다. 따라서 위와 같이 rst 변수에 저장해서 함수로 넘겨준다



 

 


 

 


2) Daily Backup 만들기

 

#!/bin/bash
# Daily File Backup example

echo
echo "======== File Daily Backup =============="
echo

CONF_FILE=backupfiles
DEST_DIR=./backup
DATE=$(date +%y%m%d)
FILE_NAME=$DATE.tar.gz
DEST_FILE=$DEST_DIR/$FILE_NAME

#Check if BACKUP_FILES exist
if [ -f $CONF_FILE ]
then
 echo $CONF_FILE exist!!!
 echo
else
 echo $CONF_FILE does not exist!!!
 exit 1
fi

#Check Backup Directory exist

if [ -f $DEST_DIR ]
then
 echo $DEST_DIR is regular file!!!
 exit 2
else
 if [ -e $DEST_DIR ] && [ -d $DEST_DIR ]
 then
  ls -ld $DEST_DIR
 else
  mkdir $DEST_DIR
  ls -ld $DEST_DIR
 fi
fi

#Make backup file name list

file_no=1
exec < $CONF_FILE
read filename
echo
echo "======== $filename ============"

while [ $? -eq 0 ]
do
 if [ -f $filename ] || [ -d $filename ]
 then
  filelist="$filelist $filename"
 else
  echo $filename does not exist!!!
  echo "continue to build backup list"
 fi
 fine_no=$[ $file_no + 1 ]
 read filename
done
echo
echo "Backup file list : $filelist"
echo

#Makeup backup file and compress it using tar
echo "------ Start archiving backup files ---------"
echo
tar -czf $DEST_FILE $filelist 2> /dev/null

echo "Archiving completed!!!"
echo
echo "Resulting Archiving file : $DEST_FILE"
echo

ls -l $DEST_FILE


 


 

 


 

 


주의 : 쉘은 특별한 경우가 아니라면 항상 서브쉘에서 돌려야 한다...

기존 환경변수를 건드리면 안되기 때문에...

sh test.sh

source test.sh

. test.sh

는 되도록이면 쓰지 않는다!!

 

 


 

 


 

Shell에서 쌍따옴표(")나 따옴표(') 는 동일하다. String으로 인식한다.

 

1) 특정 Directory의 실행 파일만 모두 출력:

 

#!/bin/bash

for file in /home/aiadm/lab/chat01/*
    do
       if [ -d $file ]
            then
                echo $file is directory
       elif [ -f  $file ]
            then
                echo $file is regular file
       else
            echo nothing
       fi
    done

 


 

 


 

 


 

2) File Path를 입력받고 실행가능한 파일 리스트 출력

 

#!/bin/bash

read -p "input directory : " dir

for file in $dir/*
  do
     if [ -x $file ]
        then
        echo $file is executable
        echo $file >> execfiles
     else
        echo nothing
     fi
 done


 

 


 

 


 

3) For Loop을 돌려서 Sum을 출력

 

#!/bin/bash

for (( i=1, sum=0; i<11; i++))
    do
       echo "loop_$i is running"
       sum=$[$sum+$i] #아님 $(($sum+ $i))
    done
echo $sum


 

 


 

 


4) 반복문으로 구구단 

 

#!/bin/bash

read -p "Input num1 : "  num1
read -p "input num2 : "  num2


for (( i=1; i<=num1; i++ ))
   do
     for (( j=1; j<=num2; j++))
        do
           echo "$i단  i:$i *  j:$j = $(($i*$j))"
        done
        echo
    done

 

1) 디렉터리 또는 파일 유형 확인 :

#!/bin/bash

read -p "Input file name : " fname

if [ -e $fname ] #fname 유무여부를 확인한다.

    then
        echo $fname exists
fi

if [ -d $fname ]
    then
        echo $fname is directory
        cd $fname #fname이 디렉터리일 경우 해당 디렉터리로 이동한다.
        pwd
fi

if [ -f $fname ] #fname이 파일인지 여부를 확인한다.

    then
        echo $name is regular file
fi

 


 

 


 

 


2) 파일 중 오래되거나 더 최근 파일을 찾는 프로그램 

 

#!/bin/bash

read -p "Input two file : " fname1 fname2

if [ $fname1 -nt $fname2 ]
    then
        echo $fname1 is newer then $fname2
else
    echo $fname1 is older than $fname2
fi

 

 


 

 


3) Password Digit Count 제한 주기 :

 

Digit Count를 할 때는 ${#password} 와 같이 입력한다.

 

#!/bin/bash

read -p "ID: " id
#read -s -p "Password : " password
prompt="Password : "
while read -p "$prompt" -r -s -n 1 char
 do
  if [[ $char == $'\0' ]]
     then break;
  fi
    prompt='*'
    password+=$char
 done
echo
if [ ${#password} -lt 8 ]
   then
        echo your password must be gretater than 8 digits
        exit 0
fi
echo
echo Your id: $id, Password: $password

 


 

 


 

 


 


*서브쉘 실행

./test.sh

 

*쉘 자체 실행

. test.sh

source test.sh

 

시스템 변수와 로컬변수가 충돌 할 경우 서브쉘로 돌려주는 것이 좋다.

 

예를 들어...아래와 같은 shell파일이 있다고 하면...

 

test.sh

 

#!/bin/bash

HOME=/home/aiadm
echo $HOME

 

test.sh을 실행하기 전에 echo $HOME 입력했을 때

/home/test 였을 경우...

 

./test.sh(서브쉘로 실행)를 실행한 후에 $HOME 환경변수는 바뀌지 않는다.

 

. test.sh(쉘 자체를 실행)를 실행한 후에 $HOME 환경변수는 변경되며...환경변수가 변경될 수 있기 때문에 위험하다.

 


 

 


 

 


 

1) If문 사용하기 :


 

#!/bin/bash

if pwd
    then
        echo pwd command exists
fi

if mypwd
    then
        echo mypwd exists
fi

 

if cat /etc/passwd
    then echo cat exists
fi

if...then...fi

 

 

2) if else문 사용하기

 

#!/bin/bash

read -p "Input User Name : " name

if grep $name /etc/passwd #입력받은 name값이 /etc/passwd 밑에 있으면
        then echo $name exists!!
        else echo $name does not exist
fi

exit 0

 

if...then....else..fi


 

 


 

 


3) if 조건문을 따로 분리할 경우 :

 

#!/bin/bash

read -p "Input User Name : " name
grep $name /etc/passwd
if (($? == 0 ))  # 이전 조건에 에러가 없을 경우

        then echo $name exists!!
        else echo $name does not exist
fi

exit 0

 

4) test 명령어 사용하기 :

 

#!/bin/bash

value="Apple"

if test $value
        then echo Value : $value
else
        echo value is empty
fi

exit 0

 


 

 


 

 


5) 숫자 비교 테스트


n1 -eq n2

=> n1과 n2가 같은지 검사함

n1 -ne n2

=> n1과 n2가 같지 않은지 검사함

n1 -ge n2

=> n1이 n2보다 크거나 같은지 검사함
n1 -gt n2

=> n1이 n2보다 큰지 검사함

n1 -le n2

=> n1이 n2보다 작거나 같은지 검사함

n1 -lt n2

=> n1이 n2보다 작은지 검사함

 

+ Recent posts