Three.js r86で何が変わったのか
2017/07/03
  • このエントリーをはてなブックマークに追加

はじめに


リリースから一週間以上経ってしまいましたが、今回もThree.jsのr86のリリースノートを適当にまとめます。

要点


個人的に大きいと思うのはMaterialオブジェクトにonBeforeCompile()コールバックが追加されて、組み込みマテリアルのシェーダーをコンパイル前に修正できるようになり、カスタマイズの自由度が大幅に増したことでしょうか(#11475)。

あと、VRデバイスが接続されているとWebGLRendererが自動的にWebVRCameraを使用するようになったのも、今後のVR対応が期待できて楽しみな感じです(#11548)。

コードの変更点


以下、r86のリリースノートの要約です。

バグフィックス


Global
IE11のためにUint8ClampedArrayがない場合はUint8Arrayを使用するようになりました。(#11462
Mesh
updateMorphTargets()がBufferGeometryをサポートするようになりました。(#11285
Matrix4
視線がupベクトルと並行になる場合にも正しく動作するようになりました。(#11543
ObjectLoader
r85で廃止されたMultiMaterialを処理できるようになりました。 (#11220
WebGLRenderer
setViewport()とsetScissor()がpixelRatioを考慮しない不具合が修正されました。(#11445
WebGLRenderer/Shaders
クアルコムのGPU、Adreno 3XXシリーズ用のワークアラウンドが追加されました。(#9988
Fixed equirectangular reflection. #11508 (@NNskelly)
WebGLRenderer/SpritePlugin
WebGLRenderer/WebGLState
CustomBlendingで発生する不具合が修正されました。(#11336

追加


Material
onBeforeCompile()コールバックが追加されました。これにより組み込みマテリアルのシェーダーをコンパイル前に書き換えることができるようになりました。(#11475
Object3D
applyQuaternion()が追加されました。(#11334
PolyhedronGeometry
detailsが0の時はフラットシェーディングされるようになりました。(#11330
WebGLRenderer
GPUに転送後にJS側のindexを解放できるようになりました。(#11412
内部的に使用されていたWebGLRenderListsがrenderListsプロパティとして公開されました。これによりシーンが不要になったときに外部からオブジェクトをdisposeできるようになります。(#11497
getDrawingBufferSize()とsetDrawingBufferSize()が追加されました。(#11374
WebGLRenderer/Shaders
displacementMapがmorph normalを考慮するようになりました。(#11271
WebGLRenderer/SpritePlugin
blendingのすべてのパラメータが有効になりました。(#11322
onBeforeRender()ハンドラが有効になりました。(#11559
WebGLRenderer/WebGLTextures
mipmap作成前にテクスチャのフィルタのタイプをチェックするようになりました。(#11465
WebGLRenderer/WebVRManager
WebGLRendererがWebVRCameraを持つようになり、VRデバイスが使用されているときには自動的にWebVRCameraを使用するようになりました。(07b0896b44f037b60b888#11548

変更


Clock
stop()を呼び出すとautoStartがfalseに設定されるようになりました。(#11481
Object3D
パフォーマンス向上のためにonBeforeRender()とonAfterRender()がインスタンス変数ではなくメソッドになりました。(#11288
SkeletonHelper
renderループ内でupdate()を呼ぶ必要がなくなりました。(#11411
WebGLRenderer
setViewport()とsetScissor()でyが反転されるようになりました。(43ae8e4277c706
背景に関係するコードがWebGLBackgroundに移動されました。(9b260d8

Examples


いろいろと修正されているようですが、とりあえず新しく追加されたサンプルだけ紹介します。

webgl_animation_keyframes_json
Colladaのkeyframeと同等のものがJSONで定義できるようになったようです。
webgl_loader_gltf2
PBRのサンプルとしてmetal/roughnessを少しずつ変化させた球の見た目を確認できます。(Model:MetalRoughSpheres)
webgl_camera_array
ArrayCameraのサンプルが追加されました。
Loader
各種Loaderのサンプルに色々追加があるようです。