2017년 12월 Soundcloud

사운드 클라우드 들어가면 평상시에는 - 좋아요 누른 곡들 랜덤 재생하고, 탐색 기간에는 Discover 눌러서 내 좋아요 기반으로 추천되는 곡들 쭉쭉 넘겨 들으면서 좋아요 누르는 작업을 거쳐서 새로운 플레이 리스트를 만드는걸 좋아하는데 어느날부터 Discover에 들어갔더니 이렇게 바꼈다. 

MORE OF WHAT YOU LIKE는 뭐야 내가 좋아요 누른거가 그냥 뜨는거잖아.. 사운드 클라우드 커뮤니티에서 뜨는 곡들은 나랑 안맞는데.. 

하면서 빈정대고 있었는데 Artists you should know 틀었는데 다 맘에든다 뭐지!!!  열심히 들어댄 보람이 있구만




저작자 표시 비영리 변경 금지
신고

'오늘하루 > 음악' 카테고리의 다른 글

2017년 12월 Soundcloud  (0) 2017.12.14
2017년 12월 Last FM  (0) 2017.12.10
2016년 6월 Last FM  (1) 2016.06.29
2016년 3월 Last FM  (0) 2016.03.31
2015년 12월 Last FM  (0) 2016.01.05
2015년 11월 지니뮤직  (1) 2015.11.16

2017년 12월 Last FM


간만에 Last FM 캡쳐. 너무 오랜만이라 90일 기준으로 봤다

honne 의 just dance 가 높은 이유는 다름 아니라 지니뮤직에서 일단  플레이리스트를 실행하면 리스트상 젤 첫곡이 재생되고 그 다음에 내가 랜덤 플레이로 누르면 그 다음부터 랜덤 순서로 재생이 되는데 이때 매번 첫곡으로 얻어걸리는데 just dance.. 고치기 귀찮아서 40번가까이 그냥 그렇게 틀었다는거였다

첨엔 좋은지 모르고 그냥저냥했는데 매번 음악 플레이의 출발을 저곡으로 하다보면 그냥 중독됨

블로그에 방문해주신 손님이 지니뮤직 웹플레이어 재생목록을 last fm으로 scrobble할수있는 플러그인을 만들어두셨다고 알려주셔서 

여름에 두세달 가량 지니 유료 결제해서 '행복하게' 사용하다가 어느날 지니가 새로 리뉴를 하면서 플러그인이 먹통이 됐다

그래서 그달 바로 탈퇴.

다시 soundcloud로 돌아왔는데 플레이리스트 관리할 시간은 없고 그냥 그때그때 하트 누른거 랜덤으로 잘 듣고있는중

아무튼 soundcloud를 즐겨듣게 된 이후로 다양한 아마츄어 아티스트나 디제이들을 접하게되면서 아티스트 숫자가 거의 두배로 급 뛰었다




저작자 표시 비영리 변경 금지
신고

'오늘하루 > 음악' 카테고리의 다른 글

2017년 12월 Soundcloud  (0) 2017.12.14
2017년 12월 Last FM  (0) 2017.12.10
2016년 6월 Last FM  (1) 2016.06.29
2016년 3월 Last FM  (0) 2016.03.31
2015년 12월 Last FM  (0) 2016.01.05
2015년 11월 지니뮤직  (1) 2015.11.16

[유니티] Unity create a game series (sebastian lague)



Unity Create a Game Series

https://www.youtube.com/watch?v=SviIeTt2_Lc&list=PLFt_AvWsXl0ctd4dgE1F8g3uec4zKNRV0

https://github.com/SebLague/Create-a-Game-Source


와 한글 번역 해주신분 감사합니다.

튜토리얼도 알차고 매 에피소드마다 코드 히스토리도 github에 올라와있고 이 튜토리얼로 공부한 한글 블로거들도 있어서 뭔가 문제에 부딪혔을때 검색해보거나 물어볼수도 있지 않을까 하는 기대감(?)



영상 러닝타임 약 5시간, 실제 따라 만들려면 하루 이틀이면 되려나. 생각좀 해보자.

00 Intro 1:31

01 Player controller 15:09

02 Gun system 14:43

03 Enemies 12:59

04 Damage system 10:06

05 Spawn system 10:41

06 Enemy Attacks 16:19

07 Some loose ends 10:37

08 Tile map 12:04

09 Obstacle placement 15:03

10 Map connectivity 17:04

11 Map navigation 14:40

12 Finishing the map generator 18:42

13 Random spawning 20:24

14 Game over 14:43

15 Particle death effect 13:24

16 Weapon effects 20:38

17 Weapon variation 12:41

18 Wave difficulty 16:04

19 Crosshairs 14:20

20 Recoil and reloading 22:12

21 Guns and UI 22:16

22 Audio pt1 17:30

23 Audio pt2 17:22

24 Menu 31:20

25 finishing up 31:12

저작자 표시 비영리 변경 금지
신고

[Processing] openCV를 활용한 트래킹 영역 설정 및 왜곡 보정


위쪽은 일단 포토샵으로 만든거긴한데 레고패널 위에 양 모서리에 흰색 동그라미 하나씩 두면 웹캠 영상 중에 그 영역 안의 부분만 캡쳐해서 쓰는 코드 작성.

일단 처리 순서는 뭐가 더 효율적인지는 잘 모르겠지만 내가 만든 방법은

1) openCV로 받은 이미지 중 흰색 부분을 다 contour 추출 

2) contour들을 bounding box 씌워주고 중심점 추출 

3) 그 중심점들과 전체화면의 각 모서리들간의 거리를 구해서 4개의 점에서 젤 가까운 상하좌우 obeject를 찾는다

4) 그 4개점을 연결해주는 사각형안에 있는 부분만 Warpperspective 로 다시 픽셀 재배열 하여 우측 타겟사각형 안에 구겨넣음 


이렇게 해두면 나중에 웹캠 위치나 각도 보정도 되고, 프로젝션이랑 카메라인풋이랑 싱크시키기도 좀더 수월해지고, 

아래 판의 크기에 따라서 프로젝션되는 영역 자체도 작고 커지는 scalablity가 생겨서 다른 데모만들떄 좀 유용하지 않을까 기대중


맥에 기본 카메라인 facetime 말고 외부 웹캠으로 불러오게하는 방법

http://www.codingcolor.com/2014/01/21/processing-2-1-webcam-basics/


오브젝트 거리 구하는것도 좀더 정교한 방식도 있다

http://www.pyimagesearch.com/2016/04/04/measuring-distance-between-objects-in-an-image-with-opencv/


WarpPerspecvie 샘플 (여기서는 detection된 contour 네개중에 몇번째거만 오른쪽으로 띄우라는 예제이므로 변형해서 사용)

https://github.com/atduskgreg/opencv-processing#warpperspective-in-progress


Contour간의 위계도 지정하기

http://docs.opencv.org/trunk/d9/d8b/tutorial_py_contours_hierarchy.html


contour 간의 sorting 순서 

http://www.pyimagesearch.com/2015/04/20/sorting-contours-using-python-and-opencv/




저작자 표시 비영리 변경 금지
신고

[Processing] OpenCV를 활용한 Shape Detection

급히 정리하는 opencv

프로세싱에서 Import library 해보면  openCV가 두개가 뜬다.


위에 openCV는 좀 예전 버젼이고 http://ubaa.net/shared/processing/opencv/

아래 openCV for processing이 비교적 최근 버젼이며 예제도 더 많다.  (레퍼런스 페이지 http://atduskgreg.github.io/opencv-processing/reference/gab/opencv/OpenCV.html  Github https://github.com/atduskgreg/opencv-processing) 

그리고 이 둘다 openCV for java로 이루어져있기때문에 포함되어있지않은  예제나 설명부분은 java 레퍼런스 페이지에 가면 좀더 응용할여지를 찾아볼수있는듯. 

물론 openCV 오리지널 레퍼런스 페이지로 가게되면 C++기반이긴하지만 원래 어떤 기능들이 더 지원가능한지도 가늠하는데 도움이 되고 있음 (그래도 C++은 몰라서 나에겐 해독이 잘안되는편..)

두가지가 지원 버젼 및 윈도우용 64비트 문제가 뒤엉켜있는데 환경에 맞게 잘 선택해야할듯.

특히 2에서 3로 바뀌면서 setup()에서 캔버스 사이즈를 변수로 받아오는 기능이 없어져서 오로지 픽스된 숫자로만 캔버스 사이즈 기능을 저장할수있게 되었기 떄문에 기존 예제들 중에 플렉서블하게 만들어둔것들은 고정 숫자로 바꿔줘야함. 그래서 지금 테스트는 주로 2로 하는중~



아래 세가지 소스를 조합해서 실시간 비디오로 shape detection + Identification + motion detection까지 되는 데모를 만들었다

지금은 그냥 일반 카메라로 블랙배경 + 흰 물체로만 하고 손은.. 까만 장갑끼고 ㅋㅋㅋ 

요 다음 단계로는 적외선 카메라로 흰색으로 반사된 오브젝트만 트랙킹하는걸로 바꿀거라 손은 사라짐



opencv for processing 예제 중에 find countors + polygon vertex 그려주는 예제 

https://github.com/atduskgreg/opencv-processing/blob/master/examples/FindContours/FindContours.pde


트랙킹된 오브젝트 contour를 둘러싸는 bounding box 만들기 

http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html


Daniel Shiffman의 페이스 디텍션되는 숫자에 boudning box만들어주고 consistent한 ID부여하기 코드

http://shiffman.net/general/2011/04/26/opencv-matching-faces-over-time/


이 다음에는 각 shape들이 사전에 등록된 id와 매칭이 되게 하는 template matching 기능과 결합할 예정 

http://www.prodigyproductionsllc.com/articles/programming/template-matching-with-opencv-and-c/




저작자 표시 비영리 변경 금지
신고

[Processing] Computer vision for processing (Daniel Shiffman)

명불허전 다니엘 쉬프만 (http://shiffman.net/) 님의 컴퓨터 비전 기초 강의

유투브 재생목록 클릭 

11.4: Introduction to Computer Vision

11.5: Computer Vision: Color Tracking

11.6: Computer Vision: Motion Detection

11.7: Computer Vision: Blob Detection

11.8: Computer Vision: Improved Blob Detection

11.9: Computer Vision: Blob Tracking with Persistence

11.10: Computer Vision: Adding Lifespan to Blobs


졸업 프로젝트에서 뷰포리아 마커 트랙킹 쓰려했는데 환경도 너무 어둡고 마커위에 프로젝션이 되서 색상 트랙킹이 잘안되서 OpenCV로 갈아탈까 생각중

컴퓨터비전은 정말 또 다른 어마무시한 벽이어서 시작할 엄두가 안났는데 그래도 쉬선생님이 설명해주면 그나마 조금은 안심이 된다

요 강의 목록에서는 간단하게 컬러트랙킹, 이전프레임과의 픽셀 차이값을 비교한 모션 디텍션, 그리고 Bulb 여러 점들을 디텍션하는 세가지 주제로 이루어져있다. 

뒤로갈수록 슨생님도 헷갈리고 나도 헷갈리고..........

shape detection이랑 bult detection이 혼합된 플로우를 만들어야되는데 과연 내가 할수있는 일인걸까

이거 다음엔 키넥트 강좌인데 일단은 키넥트는 빼기로 했다.

아무튼 또 굿럭



저작자 표시 비영리 변경 금지
신고

Moves API 활용 서비스 : moveoscope

몇년전 이동 데이터 모아서 아름다운 시각화와 인터페이스로 우리를 혹하게했던 모바일 어플리케이션 Moves https://www.moves-app.com/
얼마전에 갑자기 기억이 나서 찾아보니 이 API를 활용하는 앱이 엄청 많아졌다

그 당시엔 라이프로깅 자체에도 관심이 많고, 환경센서 데이터 시각화 과제도 있었기 때문에 참고하느라 애용했었는데 최근 다시 시각화때문에 리서치 하다가 찾아서 깔아봤더니 2013-4년 데이터가 고스란히 남아있어서 진짜 반가웠다. 그땐 쌓아서 뭐하나 싶어도 지나고 보면 데이터도 추억처럼 어쩐지 애틋하네.


iphone, android, web 용으로 110개쯤. 유사한 서비스 컨셉도 많고, 특수한 용도의 플러그인 정도로 나온 것도 있고. 


랭킹 1위 moveoscope. 기간 설정, 이동 유형, 많이 방문한 장소 표시 뿐만 아니라 특정 장소를 선택하면 어디에서 그 장소로 왔고 그 장소에서 어디로 갔는지 앞뒤 맥락이 나오는점도 재밌다 (우린 어디에서 와서 어디로 가는가.. 꽤나 사색적인 컨셉이랄까) 



큰 동그라미가 강남역 회사인데 클릭해보니 데이터는 거짓말을 하지 않아서 좀 슬픔 .....

평균 9-10시에출근해서 1-2시에 퇴근 ..주말출근도 잦았고 

더 슬픈건 회사에 있다가 자주 가는 장소가 집 다음으로 한의원..........(그위에 점 두개도 사실 병원...)
최근 방문이 2014년 5월인건 퇴사하면서 앱도 지워버려서이고..



좌하단은 사당역, 그 우측은 회사, 그리고 강건너 우 상단은 한남동으로 이사가고 이태원 열심히 돌아다녔던거. 

맨 좌측 상단에 하늘색 찔끔있는건 현장리서치하느라 여의도에서 자전거타고 돌아다닌 흔적까지 정말 깨알같네..

중간에 삐죽삐죽 끊기는 부분은 보통 지하철이나 한강다리위에서 일시적으로 통신이 잘 안되서 놓쳐지는 부분인듯. 

저것도 뭔가 보완해줄수 있으면 좋을거 같은데 




일주일 정도 모아본 카이스트 라이프




저작자 표시 비영리 변경 금지
신고

'스터디 > Data visualization' 카테고리의 다른 글

Moves API 활용 서비스 : moveoscope  (0) 2016.10.04

[APP] Papers 3 및 Mac Bundle


Back to the Mac에서 소개된 대학생을 위한 할인 패키지에 Paper 3와 devonthink가 포함되어있어서 구매했다 (49.99)

http://macnews.tistory.com/4975

사실 이번 방학때 Papers 사려고 학생인증까지 받았는데 막상 결제를 하려고하니 약간 고민이 됐었다

마지막 학기인데 이제와서 다른 앱으로 갈아타기엔 너무 늦지 않았나 싶어서 그냥 쓰던 에버노트에나 잘 정리하자며 스킵했는데 (에버노트에 저장해둔 논문만 벌써 500개라 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ )

아무튼 에버노트도 PDF 내부 검색과 annotation도 워낙에 훌륭하긴하지만 나중에 논문쓰느라 바쁠땐 citation 도와주는것만도 큰 도움이 될것 같은거랑,

그중에 이제 진짜 중요한것만 골라서 어서어서 정리해야지.....

테스트 스크린샷.

맥이랑 윈도우 모바일 다 지원되서 다행.


저작자 표시 비영리 변경 금지
신고

[유니티] Playmaker

유니티용 플러그인 Playmaker를 질렀다 (65달러에서 45달러로 할인중이었음)

프로세싱으로 만들어둔 데모를 이제 본격 유니티의 세상으로 옮겨야하는데 java랑 C#이 그나마 비슷하다고는 해도 새로 배워야할 개념이 많아져서 허우적대는중

비주얼 프로그래밍이라고해서 Max/msp 같은건가 싶었는데 FSM 개념을 담은 Flow-chart?..

State Action Event간의 관계가 헷갈려서 듣던 튜토리얼을 멈추고 블로그를 뒤적거리며 개념 정리하는 중.



[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발 - Slideshare

introduce unity3D and playmaker basic - Slideshare

Hutong Games사의 튜토리얼 페이지



  • 함수 단위가 아닌 FSM 단위로 비주얼 프로그래밍 가능

  • GameObject FSM (Finite State Machine : 유한상태기계) 컴포넌트 하나 추가한 것이 하나의 FSM 객체가 된다. 한 게임 오브젝트에 여러 FSM 객체를 만들수도 있으며 일종의 레이어처럼 사용할수있다 (FSM1 캐릭터의 상태 변화제어, FSM2 캐릭터의 행동변화 제어)

  • FSM : State가 특정하게 제한된 것을 Finite State라 하며, 정해진 절차에 따라 반복적으로 그 일을 수행하는 Machine



  • State : FSM에서 하나의 상태를 표현하는 객체. 여러 action과 transitino으로 구성됨
  • Action : State에서 수행할 하나의 작업을 표현하는 객체. (오브젝트 이동 회전 등등등)
  • Transition : State에서 다른 State로의 이동. Transition에 지정된 Event가 발생했을때 다음 State로 넘어감
  • Event : Mouse down..FINISHED 등
  • Variable : 변수(Global도 따로 지정 가능). FSM이 아닌 곳에서도 객체 참조하여 값 얻을수 있음 


  • Animation event를 Playmaker로 전달 : animation event 함수를 PlaymakerFSM 함수중 SendEvent로 지정

  • 모든 PlayMakerFSM 컴포넌트로부터 Action 조회하기

foreach (var fsm in Component.FindObjectsOfType<PlayMakerFSM>())
{
    if (!fsm.Fsm.Initialized)
        fsm.Fsm.InitData();

    foreach (var state in fsm.FsmStates)
    {
        foreach (var action in state.Actions)
        {
            // use action
        }
    }
}

  • 마우스 클릭한 위치에 있는 오브젝트 찾아서 PlayMakerFSM에 이벤트 전달

if(Input.GetMouseButton(0)) {
   ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   if (Physics.Raycast(ray, out hit, 5000)) {
    Debug.Log("name : " + hit.collider.name);
    //PlayMakerFSM fsm = hit.collider.GetComponent<PlayMakerFSM>();
    //fsm.SendEvent("이벤트명");

   }
  }


저작자 표시 비영리 변경 금지
신고

[자료] 유니티 UI 디자인 교과서 - 예제 코드


유니티 내장 UI 프레임워크 uGUI


책 링크 (http://wikibook.co.kr/UGUI/)

GitHub (https://github.com/wikibook/ugui


Chapter 1

  • Rigid Body의 Is Kinematic : 다른 오브젝트에 물리적 작용은 하지만 자신은 공간에 멈춰 있음

  • float yAngle = rotationSpeed * Time.deltaTime;   

    transform (0.0f, yAngle, 0.0f);

    //Time.deltaTime은 이전 프레임이 끝난 후 지금까지의 시간(초)


  • 인스펙터 뷰에서 private이나 protect 값이라도 앞에 [SerializeField] 넣으면 수치 변경 가능 
  • CubeGenerator
  •  


    public class CubeGenerator : MonoBehaviour

    {
        [SerializeField] private GameObject cubePrefab;    // 상자 프리팹
        
        public void Generate()
        {
            // 상자 프리팹을 인스턴스로 만든다
            GameObject obj = Instantiate(cubePrefab) as GameObject;
            // 인스턴스를 「CubeGenerator」오브젝트의 자식 형태로 추가
            obj.transform.SetParent(transform);
            // 인스턴스의 스케일을 프리팹에 맞춘다
            obj.transform.localScale = cubePrefab.transform.localScale;
            // 인스턴스의 위치를 CubeGenerator 오브젝트에 맞춘다
            obj.transform.position = transform.position;
            // 떨어질 때마다 변화하도록 회전 각도를 무작위로 지정
            obj.transform.rotation = Random.rotation;
        }
    }

  • Input Controller 
  •  using UnityEngine;


    public class InputController : MonoBehaviour
    {
        void Update()
        {
            if(!Application.isMobilePlatform)
            {
                // 모바일 플랫폼이 아닐  실시할 처리
                if(Input.GetMouseButtonUp(0))
                {
                    // 마우스 왼쪽 버튼을 눌렀다  상태라면
                    // CubeGenerator 컴포넌트에 포함된 Generate 메서드 호출
                    GetComponent<CubeGenerator>().Generate();
                }
            }
            else
            {
                // 모바일 플랫폼일  실시할 처리
                if(Input.touchCount >= 1)
                {
                    Touch touch = Input.GetTouch(0);
                    if(touch.phase == TouchPhase.Began)
                    {
                        // 터치가 시작된 상태라면 CubeGenerator 컴포넌트에 포함된
                        // Generate 메서드를 호출
                        GetComponent<CubeGenerator>().Generate();
                    }
                }
            }
        }
    }

  • 이벤트 메서드 
  • - Awake : 오브젝트의 인스턴스가 로드됐을 때 한번 호출.  씬에 배치된 게임오브젝트에 추가된 스크립트라면 씬이 시작될때 호출되고 프리팹에 추가된 스크립트라면 인스턴스로 만들어진 직후에 호출됨. 비활성화일때는 호출되지 않고 처음 활성화된 시점에 호출  

    - Start : 첫프레임이 지나가기전 한번만 호출

    - FixedUpdate : 게임 오브젝트가 활성화되어있는 동안 고정 프레임율에 맞춰 호출

    - Update : 게임오즈젝트가 활성화되어있는 동안 프레임마다 호출

    - LateUpdate : 프레임마다 Update 메서드가 처리를 끝내면 LastUpdate 메서드가 호출됨. Update 메서드에서 변경된 내용을 처리에 반영하고 싶을떄 사용 

    - Awake가 호출된 시점에서 생성될 오브젝트의 인스턴스는 모두 생성된 상태가 되므로 이 시점에서 다른 오브젝트를 참조할수는 있으나 각 오브젝트에 연관된 Awake 메서드가 호출되는 순서가 정해진 것이 아니므로 참조되는쪽 오브젝트 처리가 안끝났을수도 있음. Awake메서드에서는 자신의 초기화 하고나서 다른 오브젝트로 연결되는 참조를 얻어내기만 하고 정보를 얻어내는 일은 나중에 호출되는 Start에서 하는 것 권장 


Chapter 2


  • 레이어별 렌더링 순서를 코드로 변경 

    obj.transform.SetAsFirstSibling(); //맨먼저 렌더링. 가장아래쪽.

    obj.transform.SetAsLastSibling(); //맨나중에렌더링. 가장위쪽

    obj.transform.SetSiblingIndex(2);  //계층에서 3번째요소가 되는 위치에. 아래에서 세번째로 렌더링.


  • 캔버스 렌더링 모드 
  • - Screen Space 

     : Overlay 모드. 화면 전체 덮는 레이어. Pixel perfect는 선명하나 퍼포먼스 많이 차지. Sort Order 는 0부터 아래쪽 순서로

     : Camera 모드 : 지정된 카메라와 일정한 거리만큼 떨어져 렌더링됨. Sorting Layer 추가하여 거리와 상관없이 렌더링 순서 제어 가능. 

    - World Space 모드 : 다른 게임 오브젝트와 동일한 자격. 



저작자 표시 비영리 변경 금지
신고