Wintab을 방해하지 않고 펜 탭의 기울기 데이터를 사용하고 싶습니다.

왜 필요했는가



생방송용으로 Live2D가 조작에 연동하는 구조를 만들었을 때
펜 탭의 움직임을 기울여 흉내내게되면 더 그려진 느낌이 나올 것입니다.
펜 탭 전통, Wacom 개발자 사이트 에서 정보 수집
그래서 Wintab이라는 펜 탭 등의 디지타이저 무케의 API를 알고
처음에는 이것을 사용하여 기울기 데이터를 얻는 방법을 취했습니다.

wintab에서는 무엇이 좋지 않았습니까?



Wintab은 기본 페인트 소프트웨어 용 API입니다.
가정으로 펜 탭 정보를 처리하는 것은 페인트 소프트웨어 만
그래서 WTOverlap과 WTEnable에 의한 포커스가 문제가 되었다
펜 탭 정보를 얻으려면 Wintab의 포커스를 받아야합니다.
초점을 맞추면 페인트 소프트웨어에 대한 정보가 중단됩니다.
그림 그리기 배달을 목적으로 한 경우는 본말 전도가 된다

HID에 액세스



Wintab 내에서 알레 콜레 간섭하지 않도록 노력해 보았지만, 아무래도 간섭한다
그래서 정책을 전환했습니다.
펜 탭은 대체로 USB로 접속되지만, USB 접속의 조작계 디바이스는 Windows에
"휴먼 인터페이스 장치"로 인식
와콤 펜 탭도 예외는 아닙니다.


USB에서 데이터가 와서 움직이고 있기 때문에 뭔가 액세스 방법이있을 것이라고 조사하면
그 만마 HID라는 구조로 USB와 IO 가속 할 수있게되어 있었다
원래는 장치 드라이버를 만들기위한 것입니다.
USB가 나돌기 시작했을 무렵의 기술로 hid32.dll의 API를 사용해 액세스 하는 방식이다
부지런한 방법은 좀처럼 취할 수 없는 버그도 있어 정당한 방법을 나타내지 않기 때문에 다른 것을 참조해 주었으면 한다

wintab의 실태로



Wacom의 Windows FAQ에는 이러한 설명이 있습니다.

VID, UsagePage, Usage는 HID 액세스에 필요한 장치 특정 코드
VID는 메이커로 고정이므로 그대로 사용하지만
hclient에서 장치 목록을 들여다 보면 와콤의 VID가 몇 가지 다른 것입니다.
UP=0xd, U=0x01은 정당하게 보이고 포커스가 없으면 데이터가 오지 않는다
결국 Wintab의 처리 된 데이터가 들어있는 것 같습니다.
현재 원시 데이터가 사용되는 것은 다른 포트입니다.
UP=0xff00, U=0xa
이 데이터는 포커스가 없어도 데이터가 온다.
그러나 데이터가 정형되어 있지 않기 때문에 이쪽에서 데이터의 정형을 해야 한다

성형은 이런 느낌

총평으로



아무래도 Wintab에 간섭하지 않고 데이터를 취하고 싶었기 때문에 갔던 이번 방법
문제점으로서는 표준 API가 아니기 때문에 최악의 디바이스 마다 프로그램을 준비하지 않으면 안 되는 것이 최대의 단점
와콤 이외의 펜 탭이라면 확실히 필요합니다.
Wintab에 표준으로 데이터를 취하는 API가 준비되면 가장 좋습니다만…
그래도 그림 Live2D 전송으로 간섭하지 않는 것은 필수 기능

좋은 웹페이지 즐겨찾기