크롬에서만 확인했고 타 브라우저 안될 수 있습니다.
(ie 하위는 당연히 안됩니다.)
 
비율을 맞춘 이미지가 준비물로 필요합니다.
제가 사용한 이미지는 무료 icon 사이트에서 가져왔고 찾아보면 많습니다.

 

저는 step을 3등분해서 보여줄거라 다운로드 받은 이미지를 포토샵으로 비율을 맞춰줬습니다.

 

사용한 이미지 예시↓
 
가위 바위 보
 

CSS

.hands{
  // 이건 애니메이션 보여지는 크기
  width:125px;
  height: 175px;

  // 연결된 이미지 bg로 깔고 이미지 크기 정함.
  background:url('/images/hands2.jpg')no-repeat;
  background-size:384px;

  // 0.5초동안 step 3으로 나누어서 무한 실행
  animation: animate .5s steps(3,end) infinite;
}

// 100%까지 bg이미지 크기 position-x로 지정
@keyframes animate{
  0%{
  	background-position-x:0;
  }
  100%{
  	background-position-x:-384px;
  }
}

예제는 https://leeyoonseo.github.io/css_animate_ex1/ 여기서 확인 가능합니다.

 

 


ES6 기본 매개변수 정의

기존
function test(opt){
    opt !== undefined ? opt : 'optional';
    ........    
}

해결
function test(opt = 'optional'){
    ........    
}

opt 값이 없을 경우 기본 값으로 optional을 정의한다.


three.js 기초 강의글 보고 까먹을까봐 작성하는 글

보고 배운 강의 출처입니다!! : http://binteractive.org/?p=213
예제 및 예제코드는 여기서 확인하세요.

three.js는 ie10 이하 호환이 안됩니다.

[1편]
-구도 잡고 화면 만드는 것 Scene
-화면 촬영 PerspectiveCamera
-화면에 표현 WebGLPenderer
 실제 우리 눈에 보여지게 해주는 renderer

three에서 생성한 함수이기 때문에 아래와 같이 실행
var camera = new THREE.PerspectriveCamera(...);

3d 객체는 표면이 추가되어야 한다.(재질, 색....)
재질을 채우기 위해 Mesh를 함수로 만들어야  위 출처에서 설명하기를 Mesh는?

Geometry - 점, 선, 면 으로 이루어짐
Material - Geometry 색을 채워 줌 (재질)
Mesh - 점, 선, 면 들에 색을 채워준 덩어리?

즉, Geometry + Material = Mesh 라고 한다.

Mesh는 아래와 같이 추가해야 한다.
// scence.add(Mesh변수명);
var geometry = new THREE.BoxGeometry(1,1,1);
var meterial = new THREE.MeshBasicMaterial({color : 0x00ff00});
var cube = new THREE.Mesh(geometry, material);

scene.add(cube);
cube는 Mesh 변수 값이므로 변수명이 다른 것이어도 무방하다.

실제 render
-매 프레임마다 함수를 호출
-애니메이트 코드
-HTML 화면에 scene, camera render
// 최초 호출
// 재귀함수 이므로 최초 1번의 호출만 있으면 반복 호출 됨.
animate();

function animate(){
    requestAnimationFrame(animate);
    // x, y 회전
    cube.rotation.x += 0.1;
    cube.rotation.y += 0.1;
    // rendering
    renderer.render(scene,camera);
};

[2편]
z좌표가 클 수록 멀리서 보는 느낌을 준다.
1편에서는 camera.position.z = 5; 였는데,
2편에서는 50으로 수정한다.

비교 이미지 ↓

z = 5


z = 50




점을 이용해 선을 만든다.

3차원 점은 아래와 같이 작성한다.
var material1 = new THREE.LineBasicMaterial({color : 0xe0e0e0 });
var geometry = new THREE.Geometry();

// 점 추가
geometry1.vertices.push(new THREE.Vector3(x, y, z));
geometry1.vertices.push(new THREE.Vector3(x, y, z));

// 라인 객체
var line = new THREE.Line(geometry1, meterial1);
scene.add(line);
x - x좌표
y - y좌표
z - z좌표

animate로 회전 시키기.
animate();

function animate(){
    requestAnimationFrame(animate);
    line.rotation.x -= 0.003;
    line.rotation.y -= 0.004;

    renderer.render(scence, camera);
}

선, 박스 차이
// 선
var geometry = new THREE.Geometry();
var material = new THREE.LineBasicMaterial( { color: 0xe0e0e0  } );

// 박스
var geometry = new THREE.BoxGeometry( 100, 100, 100 );
var material = new THREE.MeshBasicMaterial( { color: 0x909090, transparent: true } );

그리기 위해서 
scene, camera, renderer가 필요하다고 했는데, 
여기서 renderer를 보면 WebGLRenderer()이란게 있다.
var renderer = new THREE.WebGLRenderer();

WebGL이 뭘까?
구글 검색 해본 결과, 웹 기반의 그래픽 라이브러리라고 한다.
플러그인을 사용하지 않고 OpenGL 기반 API를 이용하여 브라우저의 HTML canvas에 랜더링하여 3D 웹 컨텐츠 제작을 가능하게 한다.

아 너무 어려워서 박스 랜덤 생성까지만 따라 하다가 포기했다...
다음에 필요해지면 다시 공부해야겠다!


마우스 휠로 0 ~ 100까지 숫자 조절이 가능하게 하는 작업을 하게 되었다.

비록 취소되어 사용은 안했지만, 간단하게 검토하던 것을 적어두려고 한다!

처음에는 <input type="number"> 태그를 사용하여 간단히 작업하려고 했는데,

정책상 브라우저 호환에 문제가 있어서 <input type="text"> 태그로 작업을 진행하게 되었다.

 

HTML

<input id="target" type="text">

 

jQuery

// Firefox
$('#target').on('wheel', function(e){
   e.preventDefault();
   var num = $(this).val();
   
   if(e.originalEvent.deltaY < 0){
     if(num >= 100) return false;

     console.log('업');
   }else{
     if(num <= 0) return false;

     console.log('다운');
   }
});

// 그 외 브라우저
$('#target').on('mousewheel',function (e) {
      e.preventDefault();
      var num = Number($(this).val());

      if(e.originalEvent.wheelDelta > 0){
        if(num >= 100) return false;
		$(this).val(num + 1);
        console.log('업');
        
      }else{
        if(num <= 0) return false;
        $(this).val(num - 1);

        console.log('다운');
      }
});

Firefox만 스크롤 이벤트의 메서드가 약간 다르기때문에 분기하여 작성했다.

브라우저 체크 후 조건문으로 분기하는 작업이 필요하다.

 

Javascript

자바스크립트는 예제를 만들기 위해 작성하였기 때문에 크롬만 테스트를 했다.

const target = document.getElementById('target');

target.addEventListener('mousewheel',function (e) {
      e.preventDefault();
      var num = Number(this.value);
                       
      if(e.wheelDeltaY > 0){
        if(num >= 100) return false;
		this.value = num + 1 ;
        console.log('업');
        
      }else{
        if(num <= 0) return false;
		this.value = num - 1 ;
        console.log('다운');
      }
});

 

 

예제

See the Pen aRjgGO by leeyoonseo (@okayoon) on CodePen.

 

 

+ Recent posts