Hatena 블로그에 Three.js에서 3D 모델을 표시합니다.
Hatena 블로그에 3D 모델을 표시하고 싶습니다.
결론부터 먼저
움직이는 곳
소스 코드
소개
취미로 만든 미소녀의 3D 모델을 하테나 블로그(우울증으로 죽을 것)에 이미지로 투고하고 있다.
아직 일주일도 지나지 않았지만, 0액세스가 계속되고 있는 것은 슬프다・・・
3D 모델을 표시하고 멋지게하고 싶습니다.
3D모델을 표시할 수 있다면 이미지 페타페타의 블로그보다 멋지고 있는 블로그를 할 수 있지 않을까.
그렇게 하면, 액세스수도 늘어나지 않을까.
··· 그런 사악한 기분으로, 하테나 블로그에 3D 모델을 표시해 나가려고 한다.
Hatena 블로그에서 Three.js를 사용해보십시오.
우선은 3D모델의 표시를 제외한 Three.js를 시험해 보는, 이것이 할 수 없으면 이야기가 되지 않는다.
아래 코드를 HTML 편집 텍스트 상자에 넣습니다.
sample.html<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script>
<script>
window.addEventListener("load", init)
function init() {
// キャンバスサイズ
const width = 512
const height = 512
// レンダラーの作成
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector("canvas") })
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setSize(width, height)
// シーンの作成
const scene = new THREE.Scene()
// カメラの作成
const camera = new THREE.PerspectiveCamera(45, width / height)
// 箱の作成
const geometry = new THREE.BoxGeometry(10, 10, 10)
const material = new THREE.MeshNormalMaterial()
const box = new THREE.Mesh(geometry, material)
scene.add(box)
// レンダリング
camera.position.set(100, 100, 100)
camera.lookAt(box.position)
renderer.render(scene, camera)
}
</script>
<canvas id="canvas"></canvas>
표시 결과
할 수 있다! !
이것이 가능하다는 것은, 나중에 조금으로 3D모델을 표시할 수 있을 것 같다.
Hatena 블로그에 3D 모델 표시
마찬가지로 다음 코드를 HTML 편집에 넣습니다.
sample.html<input id="view" type="button" value="3Dモデルを表示する" />(※表示に5秒前後かかるよ)<br>
<canvas id="three"></canvas><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/s/wtcer7wh4pz0sxj/OBJLoader.js"></script>
<script src="https://dl.dropboxusercontent.com/s/i3exk9p5ddeuokq/OrbitControls.js"></script>
<script type="text/javascript">
document.getElementById("view").addEventListener("click", init);
function init() {
// キャンバスサイズ
const width = 512
const height = 512
// レンダラーの作成
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector("#three") })
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setSize(width, height)
renderer.setClearColor(new THREE.Color(0xffffff))
// シーンの作成
const scene = new THREE.Scene()
// カメラの作成
const camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 10000)
camera.position.set(0, 0, 100)
// カメラコントローラの作成
const controls = new THREE.OrbitControls(camera)
// OBJファイルの読み込み
const loader = new THREE.OBJLoader()
loader.load("https://dl.dropboxusercontent.com/s/nvm2xo3am3kx8eu/bishojo5.OBJ",
(object) => {
// 読み込み後シーンに追加
object.position.set(0, 25, 0)
object.scale.set(25, 25, 25)
scene.add(object)
renderer.render(scene, camera)
})
animation()
// カメラコントロールを反映させる、描画処理
function animation() {
renderer.render(scene, camera)
requestAnimationFrame(animation)
}
}
</script>
표시 결과
할 수 있었다! ! ! ! !
텍스처라든지 머티리얼의 설정하지 않기 때문에, 새까만이지만 360도 어느 방향에서도 볼 수 있다.
확인한 환경
Chrome(Windows)에서는 (아마) 문제없이 표시할 수 있었다.
하지만, 스마트폰의 Safari(iOS)에서는 세로의 플릭이 스크롤에 빨려 잘 표시의 회전을 할 수 없었다. 스마트폰에 대응할 때는 화면의 스크롤을 제한하거나의 대책이 필요할지도 모른다(하테나 블로그로 할 수 있을지는 모른다)
여담
파일의 위치
제일 이것이 곤란했지만, 하테나 블로그에서는 화상 이외의 파일의 업로드를 할 수 없었다. 즉, JavaScript의 소스는 물론, 3D모델 파일도 업로드할 수 없다.
어쩔 수 없기 때문에, GoogleDrive의 일반 공개로 속임수하면서 실장하려고 하면, CORS로 연주되었다.
어떻게 했는지 생각했지만, DropBox의 계정을 만들어 DropBox의 공유 링크로 구현하면 어떻게든 움직였다.
모델을 읽으려면 OBJLoader.js가 필요하지만 이것도 Three.js와 같이 핫 링크로 처리하고 싶었지만 Node.js 용 CDN 밖에 없어 포기했다.
Hatena 블로그 및 JavaScript
당연히 터무니없는 블로그에서의 스크립트 편집은 예측 효과가 없거나, 미리 보기 끼지 않으면 표시의 확인을 할 수 없거나에서 뼈가 부러진다. Three.js의 시험으로 상자를 표시했을 때에 상당히 위장했다. 솔직히 말하고, 더 이상하고 싶지 않습니다 ...
그리고, 하테나 블로그에 한정한 이야기는 아닐지도 모르지만, CORS라든지 Button에 직접 onClick 사용할 수 없거나는, JavaScript에 와카나의 자신에게는 찔렀다(반나절 정도 소비했다).
끝에
첫 투고이므로 작법적으로 이르지 않는 점이라든지, 규약적으로 위험한 부분이 있으면 가르쳐 주세요. 신속하게 수정하고 싶습니다.
실제로 움직이고 있는 곳은 미소녀 만드는 오 그 5.5~3D 모델을 표시해 본다~ 로 볼 수 있으므로, 좋으면 봐 주세요.
Reference
이 문제에 관하여(Hatena 블로그에 Three.js에서 3D 모델을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wakagomo/items/b5c7edf9282d4baf868c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선은 3D모델의 표시를 제외한 Three.js를 시험해 보는, 이것이 할 수 없으면 이야기가 되지 않는다.
아래 코드를 HTML 편집 텍스트 상자에 넣습니다.
sample.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script>
<script>
window.addEventListener("load", init)
function init() {
// キャンバスサイズ
const width = 512
const height = 512
// レンダラーの作成
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector("canvas") })
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setSize(width, height)
// シーンの作成
const scene = new THREE.Scene()
// カメラの作成
const camera = new THREE.PerspectiveCamera(45, width / height)
// 箱の作成
const geometry = new THREE.BoxGeometry(10, 10, 10)
const material = new THREE.MeshNormalMaterial()
const box = new THREE.Mesh(geometry, material)
scene.add(box)
// レンダリング
camera.position.set(100, 100, 100)
camera.lookAt(box.position)
renderer.render(scene, camera)
}
</script>
<canvas id="canvas"></canvas>
표시 결과
할 수 있다! !
이것이 가능하다는 것은, 나중에 조금으로 3D모델을 표시할 수 있을 것 같다.
Hatena 블로그에 3D 모델 표시
마찬가지로 다음 코드를 HTML 편집에 넣습니다.
sample.html<input id="view" type="button" value="3Dモデルを表示する" />(※表示に5秒前後かかるよ)<br>
<canvas id="three"></canvas><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/s/wtcer7wh4pz0sxj/OBJLoader.js"></script>
<script src="https://dl.dropboxusercontent.com/s/i3exk9p5ddeuokq/OrbitControls.js"></script>
<script type="text/javascript">
document.getElementById("view").addEventListener("click", init);
function init() {
// キャンバスサイズ
const width = 512
const height = 512
// レンダラーの作成
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector("#three") })
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setSize(width, height)
renderer.setClearColor(new THREE.Color(0xffffff))
// シーンの作成
const scene = new THREE.Scene()
// カメラの作成
const camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 10000)
camera.position.set(0, 0, 100)
// カメラコントローラの作成
const controls = new THREE.OrbitControls(camera)
// OBJファイルの読み込み
const loader = new THREE.OBJLoader()
loader.load("https://dl.dropboxusercontent.com/s/nvm2xo3am3kx8eu/bishojo5.OBJ",
(object) => {
// 読み込み後シーンに追加
object.position.set(0, 25, 0)
object.scale.set(25, 25, 25)
scene.add(object)
renderer.render(scene, camera)
})
animation()
// カメラコントロールを反映させる、描画処理
function animation() {
renderer.render(scene, camera)
requestAnimationFrame(animation)
}
}
</script>
표시 결과
할 수 있었다! ! ! ! !
텍스처라든지 머티리얼의 설정하지 않기 때문에, 새까만이지만 360도 어느 방향에서도 볼 수 있다.
확인한 환경
Chrome(Windows)에서는 (아마) 문제없이 표시할 수 있었다.
하지만, 스마트폰의 Safari(iOS)에서는 세로의 플릭이 스크롤에 빨려 잘 표시의 회전을 할 수 없었다. 스마트폰에 대응할 때는 화면의 스크롤을 제한하거나의 대책이 필요할지도 모른다(하테나 블로그로 할 수 있을지는 모른다)
여담
파일의 위치
제일 이것이 곤란했지만, 하테나 블로그에서는 화상 이외의 파일의 업로드를 할 수 없었다. 즉, JavaScript의 소스는 물론, 3D모델 파일도 업로드할 수 없다.
어쩔 수 없기 때문에, GoogleDrive의 일반 공개로 속임수하면서 실장하려고 하면, CORS로 연주되었다.
어떻게 했는지 생각했지만, DropBox의 계정을 만들어 DropBox의 공유 링크로 구현하면 어떻게든 움직였다.
모델을 읽으려면 OBJLoader.js가 필요하지만 이것도 Three.js와 같이 핫 링크로 처리하고 싶었지만 Node.js 용 CDN 밖에 없어 포기했다.
Hatena 블로그 및 JavaScript
당연히 터무니없는 블로그에서의 스크립트 편집은 예측 효과가 없거나, 미리 보기 끼지 않으면 표시의 확인을 할 수 없거나에서 뼈가 부러진다. Three.js의 시험으로 상자를 표시했을 때에 상당히 위장했다. 솔직히 말하고, 더 이상하고 싶지 않습니다 ...
그리고, 하테나 블로그에 한정한 이야기는 아닐지도 모르지만, CORS라든지 Button에 직접 onClick 사용할 수 없거나는, JavaScript에 와카나의 자신에게는 찔렀다(반나절 정도 소비했다).
끝에
첫 투고이므로 작법적으로 이르지 않는 점이라든지, 규약적으로 위험한 부분이 있으면 가르쳐 주세요. 신속하게 수정하고 싶습니다.
실제로 움직이고 있는 곳은 미소녀 만드는 오 그 5.5~3D 모델을 표시해 본다~ 로 볼 수 있으므로, 좋으면 봐 주세요.
Reference
이 문제에 관하여(Hatena 블로그에 Three.js에서 3D 모델을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wakagomo/items/b5c7edf9282d4baf868c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<input id="view" type="button" value="3Dモデルを表示する" />(※表示に5秒前後かかるよ)<br>
<canvas id="three"></canvas><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/100/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/s/wtcer7wh4pz0sxj/OBJLoader.js"></script>
<script src="https://dl.dropboxusercontent.com/s/i3exk9p5ddeuokq/OrbitControls.js"></script>
<script type="text/javascript">
document.getElementById("view").addEventListener("click", init);
function init() {
// キャンバスサイズ
const width = 512
const height = 512
// レンダラーの作成
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector("#three") })
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setSize(width, height)
renderer.setClearColor(new THREE.Color(0xffffff))
// シーンの作成
const scene = new THREE.Scene()
// カメラの作成
const camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 10000)
camera.position.set(0, 0, 100)
// カメラコントローラの作成
const controls = new THREE.OrbitControls(camera)
// OBJファイルの読み込み
const loader = new THREE.OBJLoader()
loader.load("https://dl.dropboxusercontent.com/s/nvm2xo3am3kx8eu/bishojo5.OBJ",
(object) => {
// 読み込み後シーンに追加
object.position.set(0, 25, 0)
object.scale.set(25, 25, 25)
scene.add(object)
renderer.render(scene, camera)
})
animation()
// カメラコントロールを反映させる、描画処理
function animation() {
renderer.render(scene, camera)
requestAnimationFrame(animation)
}
}
</script>
파일의 위치
제일 이것이 곤란했지만, 하테나 블로그에서는 화상 이외의 파일의 업로드를 할 수 없었다. 즉, JavaScript의 소스는 물론, 3D모델 파일도 업로드할 수 없다.
어쩔 수 없기 때문에, GoogleDrive의 일반 공개로 속임수하면서 실장하려고 하면, CORS로 연주되었다.
어떻게 했는지 생각했지만, DropBox의 계정을 만들어 DropBox의 공유 링크로 구현하면 어떻게든 움직였다.
모델을 읽으려면 OBJLoader.js가 필요하지만 이것도 Three.js와 같이 핫 링크로 처리하고 싶었지만 Node.js 용 CDN 밖에 없어 포기했다.
Hatena 블로그 및 JavaScript
당연히 터무니없는 블로그에서의 스크립트 편집은 예측 효과가 없거나, 미리 보기 끼지 않으면 표시의 확인을 할 수 없거나에서 뼈가 부러진다. Three.js의 시험으로 상자를 표시했을 때에 상당히 위장했다. 솔직히 말하고, 더 이상하고 싶지 않습니다 ...
그리고, 하테나 블로그에 한정한 이야기는 아닐지도 모르지만, CORS라든지 Button에 직접 onClick 사용할 수 없거나는, JavaScript에 와카나의 자신에게는 찔렀다(반나절 정도 소비했다).
끝에
첫 투고이므로 작법적으로 이르지 않는 점이라든지, 규약적으로 위험한 부분이 있으면 가르쳐 주세요. 신속하게 수정하고 싶습니다.
실제로 움직이고 있는 곳은 미소녀 만드는 오 그 5.5~3D 모델을 표시해 본다~ 로 볼 수 있으므로, 좋으면 봐 주세요.
Reference
이 문제에 관하여(Hatena 블로그에 Three.js에서 3D 모델을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wakagomo/items/b5c7edf9282d4baf868c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Hatena 블로그에 Three.js에서 3D 모델을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wakagomo/items/b5c7edf9282d4baf868c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)