Skip to content

Instantly share code, notes, and snippets.

@makihiro
makihiro / gist:2463727
Created April 22, 2012 11:24
Upload music file to google music
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gmusicapi.api import Api
from getpass import getpass
import sys
def init():
api = Api()
logged_in = False
attempts = 0
@makihiro
makihiro / dog.jpg
Last active February 28, 2019 07:35
tinyyolo.py
dog.jpg
@makihiro
makihiro / tinyyolo.py
Created February 28, 2019 07:36
tinyyolo.py
from __future__ import absolute_import, print_function
import os
import time
from io import BytesIO
import numpy as np
import requests
from matplotlib import pyplot as plt
from PIL import Image
//L99-103
if (navigator.xr) {
navigator.xr.isSessionSupported('immersive-ar')
.then((supported) => {
// XRデバイスが有効でimmersive-arがサポートされていれば、XRボタンを有効にする処理
xrButton.enabled = supported;
});
//L99-103
if (navigator.xr) {
navigator.xr.isSessionSupported('immersive-ar')
.then((supported) => {
// XRデバイスが有効でimmersive-arがサポートされていれば、XRボタンを有効にする処理
xrButton.enabled = supported;
});
//L107-113
function onRequestSession() {
return navigator.xr.requestSession('immersive-ar', {requiredFeatures: ['local', 'hit-test']})
.then((session) => {
// XRセッションを開始する処理
// requiredFeaturesでhit-testを要求
xrButton.setSession(session);
onSessionStarted(session); //onSessionStartedのコール
});
}
//L135-146,onSessionStarted内
session.requestReferenceSpace('viewer').then((refSpace) => {
xrViewerSpace = refSpace;
session.requestHitTestSource({ space: xrViewerSpace }).then((hitTestSource) => {
xrHitTestSource = hitTestSource; //hit testの要求
});
});
session.requestReferenceSpace('local').then((refSpace) => {
xrRefSpace = refSpace;
session.requestAnimationFrame(onXRFrame); //Render loop処理のコール
//L198-211,onXRFrame内
if (xrHitTestSource && pose) {
let hitTestResults = frame.getHitTestResults(xrHitTestSource);
if (hitTestResults.length > 0) {
//hit testを行い、hit testの結果が得られたら、バーチャルオブジェクト(reticle)を可視にセットする処理。表示位置はpose情報から取得
let pose = hitTestResults[0].getPose(xrRefSpace);
reticle.visible = true;
reticle.matrix = pose.transform.matrix;
}
}
function addARObjectAt(matrix) {
let newFlower = arObject.clone();
newFlower.visible = true;
newFlower.matrix = matrix;
scene.addNode(newFlower); //sceneに仮想オブジェクトnewFlowerを追加
flowers.push(newFlower);
if (flowers.length > MAX_FLOWERS) {
let oldFlower = flowers.shift();
scene.removeNode(oldFlower);
}
//L155-157
function onSessionEnded(event) {
xrButton.setSession(null);
}