Giter Site home page Giter Site logo

naver / egjs-view360 Goto Github PK

View Code? Open in Web Editor NEW
476.0 24.0 87.0 219.37 MB

360 integrated viewing solution

Home Page: https://naver.github.io/egjs-view360/

License: MIT License

JavaScript 4.99% HTML 2.43% CSS 0.57% TypeScript 86.68% Vue 0.38% Svelte 0.64% Sass 3.38% GLSL 0.93%
360-photo panorama spinner webgl device-orientation touch 360 video

egjs-view360's Introduction

360° panorama image / video viewer built with Typescript

npm install @egjs/view360@next

npm npm bundle size License Typescript

Angular React Vue Svelte

Supported Browsers

With Promise polyfill

IE Chrome Firefox Safari iOS Android
11+ latest latest latest 9+ 5.0+

📦 Packages

Package Version Description
@egjs/ngx-view360 version Angular port of @egjs/view360
@egjs/react-view360 version React port of @egjs/view360
@egjs/vue-view360 version Vue.js@2 port of @egjs/view360
@egjs/vue3-view360 version Vue.js@3 port of @egjs/view360
@egjs/svelte-view360 version Svelte port of @egjs/view360

License

egjs-view360 is released under the MIT license.

Copyright (c) 2023-present NAVER Corp.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

egjs-view360's People

Contributors

beldaa avatar daybrush avatar ghleokim avatar happyhj avatar malangfox avatar mixed avatar woodneck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

egjs-view360's Issues

Make getImage, getVideo method to return element before loaded.

If you use an element as an argument in a setImage or setVideo method call, you can control the playback of the media source by accessing the element, but if you use the resource url as an argument, access to the element is blocked until the load is complete. And playback control on the media source would not possible.

So if you want to use a string as an argument, and you want to provide the same functionality as using an element as an argument, you should be able to get the image/video element through getContent before the resource loading is complete.

Support 1536 cube image for some mobile browser.

Description

No Work or Crash were reported on iOS9, Android 6.x (GalaxyS5, LG G5) when loading 1536px(=width) cube image.

Steps to check or reproduce

  • Load cube projection type image with width (=1536px)
  • Run on browser iOS9, Android 6.0 (Galaxy S5, LG G5)

option name showPolePoint is not same with YawPitchControl's

Description

YawPitchControl still have showPolePoint option name as old name showPole.
So, it makes weird behavior.

Steps to check or reproduce

var panoViewer = new PanoViewer(el, {
  fovRange: [30, 65],
  fov: 65
});

// then
panoViewer.getFov() === 65; // false. but it should me true.   

distribute npm package

Description

  1. all
  • @egjs\view360
  1. panoviewer
  • @egjs/view360-panoviewer
  1. spinviewer
  • @egjs/view360-spinviewer

Script error on PanoViewer's Visible test

Description

Test page cannot import visible component. because egjs-visible is not included in dev environment.

Steps to check or reproduce

  • test page
    • /test/manual/PanoViewer/Visible.html

Support 360 Video Source

Description

Support not only image but also VIDEO!

Todo

  • video tag support (equirectangular type)
  • resource basic exception handling
  • Interface for access video/image element.

Too highly sensitivity after axes 2.3.0 (Need Tune)

Description

SpinViewer rotates items very strongly in spite of weak touch after applying axes 2.3.0

Scale value needs to be tuned.

Steps to check or reproduce

  • test file: /test/manual/SpinViewer/SpinViewer.html
  • scale : 1

spinviewer-sensitivity

  • it rotates for 12 seconds.

Support video tag for playing video

Description

By specifying video-tag in video property, makes PanoViewer play video. and support equirectangular first.

Steps to check or reproduce

var photo360Viewer = new eg.view360.PanoViewer(rootNode, {
      video: document.getElementById("videoSrc"),
   });

Check browser support on SpinViewer

Description

It's difficult to check if spinviewer is available. It's better to give a chance to check available. for example firing exception.

How about _triggerEvent asynchronously when firing error.

Description

Currently PanoViewer fires error asynchronously.

For example,

if (options.checkSupport && !options.checkSupport()) {
	setTimeout(() => {
		this.trigger(EVENTS.ERROR, {
			type: ERROR_TYPE.INVALID_DEVICE,
			message: "invalid device"
		});
	}, 0);

	return this;
}

How about this async logic into _triggerEvent function?

If event name is "error" then, fire event asynchronously.

Support Safari browser

Description

In spite that video is available on Safari, PanoViewer is not working on safari browser.

PanoViewer - Changing image is not working.

Description

setImage cannot change image if imageType is changed.

Steps to check or reproduce

panoViewer.setImage("image", "othertypeFromBefore"); //It cannot change image.

Memory usage error on Safari while running video.

Description

It fires memory use exceeds warning and null exception error like below.

image

There may be memory leaks.

Steps to check or reproduce

  1. /test/manual/PanoViewer/PanoVideo.html
  2. click play
  3. wait until it is paused.
  4. go 2 step.(util error is occurs)

Providing 'release' event

Description

From the discussion below,
#42 (comment)
@jongmoon thinks providing 'release' event will help developing with PanoViewer.
But I do not know what kind of situation is like the 'release' event becoming useful.

Isn't it enough to use debounce method to 'change' event?

Regarding Various input devices (Keyboard, Mouse, Touch, Motion(Comming Soon)…)

Hi there

Looking fwd to the support for input devices, great to see they're on the roadmap.
Have done some research to find a performant solution and this is very well done indeed!

As an accessibility feature for users who don't immediately grasp the ability to manipulate the image sequence, would be nice to have an HTML range slider that can then be dragged to have the 360 move in sync.

Thanks

Support Multi video input

Description

In video tag, you can specify multi resources for applying available video on that browser.

But Current setVideo Interface can accept only one video param. So you cannot specify multi resources if you pass it as a URL.

In this job,
If video source is URL(string), then it should accept url as Array like following.

setVideo(["url for iphone", "url for android", "and others"]);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.