码迷,mamicode.com
首页 > 其他好文 > 详细

three.map.control

时间:2018-07-09 17:14:47      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:存在   blank   lines   app   red   微信   target   content   sid   

网址:https://github.com/anvaka/three.map.control

在threejs群里发现的一个很有意思的问题之前没有接触过:

存在的问题

 我在微信小游戏中,用orbit也会出现计算错误的情况,动一下就不见了。 
解决办法
 发现了, 原来是小游戏里面获取不到 element.clientWidth, 要替换成 window.innerWidth 

three.map.control

Mobile friendly three.js camera that mimics 2d maps navigation with pan and zoom.

DEMO

Features

  • Touch friendly. Drag scene around with single finger touch, or zoom it with standard pinch gesture.

技术分享图片

  • Zoom into point. Use your mouse wheel to zoom into particular point on the scene.
  • Easing. When you pan around, the movement does not stop immediately. Smooth kinetic panning gives natural feel to it.

技术分享图片

  • Tiny. It‘s less than 400 lines of documented code.

usage

// let‘s say you have a standard THREE.js PerspectiveCamera:
var camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 3000 );

// To turn on a map-like navigation:
var createPanZoom = require(‘three.map.control‘);

// We assume that three.js scene is hosted inside DOM element `container`
var panZoom = createPanZoom(camera, container);

// That‘s it. panZoom wil now listen to events from `container`. You can pan and
// zoom with your mouse or fingers (on touch device)

// If you want to dispose three.js scene, make sure to call:
panZoom.dispose();

events

// the panZoom api fires events when something happens,
// so that you can react to user actions:
panZoom.on(‘panstart‘, function() {
  // fired when users begins panning (dragging) the surface
  console.log(‘panstart fired‘);
});

panZoom.on(‘panend‘, function() {
  // fired when user stpos panning (dragging) the surface
  console.log(‘panend fired‘);
});

panZoom.on(‘beforepan‘, function(panPayload) {
  // fired when camera position will be changed.
  console.log(‘going to move camera.position.x by: + panPayload.dx);
  console.log(‘going to move camera.position.y by: + panPayload.dy);
});

panZoom.on(‘beforezoom‘, function(panPayload) {
  // fired when befor zoom in/zoom out
  console.log(‘going to move camera.position.x by: + panPayload.dx);
  console.log(‘going to move camera.position.y by: + panPayload.dy);
  console.log(‘going to move camera.position.z by: + panPayload.dz);
});

license

MIT

three.map.control

标签:存在   blank   lines   app   red   微信   target   content   sid   

原文地址:https://www.cnblogs.com/lst619247/p/9284631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!