整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

3D电影院座位在线选座代码!每个座位的观影效果一目了

3D电影院座位在线选座代码!每个座位的观影效果一目了然

果图

各位观众老爷大家好!

今天给大家带来的是:3D电影院座位在线选座代码!

效果可见上面GIF图

下面是代码文件

由于代码过长,这里就只选择把JS源码分享出来!

需要文档版源码来我的前端群581549454,已上传到群文件

JS源码:

/**

* main.js

* http://www.codrops.com

*

* Licensed under the MIT license.

* http://www.opensource.org/licenses/mit-license.php

*

* Copyright 2015, Codrops

* http://www.codrops.com

*/

;(function(window) {

'use strict';

/**

* some helper functions

*/

/**********************************************/

/** https://gist.github.com/desandro/1866474 **/

/**********************************************/

var lastTime=0;

var prefixes='webkit moz ms o'.split(' ');

// get unprefixed rAF and cAF, if present

var requestAnimationFrame=window.requestAnimationFrame;

var cancelAnimationFrame=window.cancelAnimationFrame;

// loop through vendor prefixes and get prefixed rAF and cAF

var prefix;

for( var i=0; i < prefixes.length; i++ ) {

if ( requestAnimationFrame && cancelAnimationFrame ) {

break;

}

prefix=prefixes[i];

requestAnimationFrame=requestAnimationFrame || window[ prefix + 'RequestAnimationFrame' ];

cancelAnimationFrame=cancelAnimationFrame || window[ prefix + 'CancelAnimationFrame' ] ||

window[ prefix + 'CancelRequestAnimationFrame' ];

}

// fallback to setTimeout and clearTimeout if either request/cancel is not supported

if ( !requestAnimationFrame || !cancelAnimationFrame ) {

requestAnimationFrame=function( callback, element ) {

var currTime=new Date().getTime();

var timeToCall=Math.max( 0, 16 - ( currTime - lastTime ) );

var id=window.setTimeout( function() {

callback( currTime + timeToCall );

}, timeToCall );

lastTime=currTime + timeToCall;

return id;

};

cancelAnimationFrame=function( id ) {

window.clearTimeout( id );

};

}

function throttle(fn, delay) {

var allowSample=true;

return function(e) {

if (allowSample) {

allowSample=false;

setTimeout(function() { allowSample=true; }, delay);

fn(e);

}

};

}

// from http://www.quirksmode.org/js/events_properties.html#position

function getMousePos(e) {

var posx=0;

var posy=0;

if (!e) var e=window.event;

if (e.pageX || e.pageY) {

posx=e.pageX;

posy=e.pageY;

}

else if (e.clientX || e.clientY) {

posx=e.clientX + document.body.scrollLeft

+ document.documentElement.scrollLeft;

posy=e.clientY + document.body.scrollTop

+ document.documentElement.scrollTop;

}

return {

x : posx,

y : posy

}

}

// equation of a line

function lineEq(y2, y1, x2, x1, currentVal) {

// y=mx + b

var m=(y2 - y1) / (x2 - x1),

b=y1 - m * x1;

return m * currentVal + b;

}

var support={transitions : Modernizr.csstransitions},

transEndEventNames={'WebkitTransition': 'webkitTransitionEnd', 'MozTransition': 'transitionend', 'OTransition': 'oTransitionEnd', 'msTransition': 'MSTransitionEnd', 'transition': 'transitionend'},

transEndEventName=transEndEventNames[Modernizr.prefixed('transition')],

onEndTransition=function(el, callback) {

var onEndCallbackFn=function( ev ) {

if( support.transitions ) {

if( ev.target !=this ) return;

this.removeEventListener( transEndEventName, onEndCallbackFn );

}

if( callback && typeof callback==='function' ) { callback.call(this); }

};

if( support.transitions ) {

el.addEventListener( transEndEventName, onEndCallbackFn );

}

else {

onEndCallbackFn();

}

},

// main container

container=document.querySelector('.container'),

// the 3D element - the room

room=container.querySelector('.cube'),

// the seat rows inside the 3D element

rows=[].slice.call(room.querySelectorAll('.rows > .row')),

// total amount of rows

totalRows=rows.length,

// seats

seats=[].slice.call(room.querySelectorAll('.row__seat')),

// the plan/map

plan=document.querySelector('.plan'),

// seats on the plan/map

planseats=[].slice.call(plan.querySelectorAll('.row__seat')),

// the screen

monitor=room.querySelector('.screen'),

// the video element

video=monitor.querySelector('video'),

// play video control

playCtrl=monitor.querySelector('button.action--play'),

// intro element

intro=monitor.querySelector('.intro'),

// 'select your seats' control

selectSeatsCtrl=intro.querySelector('button.action--seats'),

// the tilt control

tiltCtrl=document.querySelector('.action--lookaround'),

// how much the camera rotates when the user moves the mouse

tiltRotation={

rotateX : 25, // a relative rotation of -25deg to 25deg on the x-axis

rotateY : 15 // a relative rotation of -15deg to 15deg on the y-axis

},

// controls whether the tilt is active or not

tilt=false,

// window sizes

winsize={width: window.innerWidth, height: window.innerHeight},

// width of one seat

seat_width=seats[0].offsetWidth,

// number of seats per row

seats_row=rows[0].children.length,

// the sum of the room′s left margin with the room′s right margin is four times the width of a seat

side_margin=4 * seat_width,

// if the following is changed, the CSS values also need to be adjusted (and vice-versa)

// distance from first row to the screen

row_front_gap=800,

// distance between rows

row_back=100,

// the gap of seats in the middle of the room (equivalent to two columns of seats)

row_gap_amount=2,

// perspective value

perspective=2000,

// transition settings for the room animations (moving camera to seat)

transitionOpts={'speed' : 1000, 'easing' : 'cubic-bezier(.7,0,.3,1)'},

// the room dimentions

roomsize={

x : seats_row * seat_width + side_margin + row_gap_amount * seat_width,

y : 1000, // SCSS $cube_y

z : 3000 // SCSS $cube_z

},

// the initial values for the room transform

initTransform={

translateX : 0,

translateY : roomsize.y/3.5, // view from top..

translateZ : 0,

rotateX : -15, // ..looking down

rotateY : 0

},

// the current room transform

roomTransform=initTransform;

function init() {

// scale room to fit viewport

scaleRoom();

// initial view (zoomed screen)

applyRoomTransform({'translateX' : 0, 'translateY' : 0, 'translateZ' : 1300, 'rotateX' : 0, 'rotateY' : 0});

// bind events

initEvents();

}

function applyRoomTransform(transform) {

room.style.WebkitTransform=room.style.transform=transform ? 'translate3d(0,0,' + perspective + 'px) rotate3d(1,0,0,' + transform.rotateX + 'deg) rotate3d(0,1,0,' + transform.rotateY + 'deg) translate3d(' + transform.translateX + 'px, ' + transform.translateY + 'px, ' + transform.translateZ + 'px)'

: 'translate3d(0,0,' + perspective + 'px) rotate3d(1,0,0,' + roomTransform.rotateX + 'deg) rotate3d(0,1,0,' + roomTransform.rotateY + 'deg) translate3d(' + roomTransform.translateX + 'px, ' + roomTransform.translateY + 'px, ' + roomTransform.translateZ + 'px)';

}

function applyRoomTransition(settings) {

var settings=settings || transitionOpts;

room.style.WebkitTransition='-webkit-transform ' + settings.speed + 'ms ' + settings.easing;

room.style.transition='transform ' + settings.speed + 'ms ' + settings.easing;

}

function removeRoomTransition() {

room.style.WebkitTransition=room.style.transition='none';

}

function scaleRoom() {

var factor=winsize.width / roomsize.x;

container.style.WebkitTransform=container.style.transform='scale3d(' + factor + ',' + factor + ',1)';

}

function initEvents() {

// select a seat

var onSeatSelect=function(ev) { selectSeat(ev.target); };

planseats.forEach(function(planseat) {

planseat.addEventListener('click', onSeatSelect);

});

// enabling/disabling the tilt

var onTiltCtrlClick=function() {

// if tilt is enabled..

if( tilt ) {

disableTilt();

}

else {

enableTilt();

}

};

tiltCtrl.addEventListener('click', onTiltCtrlClick);

// mousemove event / tilt functionality

var onMouseMove=function(ev) {

requestAnimationFrame(function() {

if( !tilt ) return false;

var mousepos=getMousePos(ev),

// transform values

rotX=tiltRotation.rotateX ? roomTransform.rotateX - (2 * tiltRotation.rotateX / winsize.height * mousepos.y - tiltRotation.rotateX) : 0,

rotY=tiltRotation.rotateY ? roomTransform.rotateY + (2 * tiltRotation.rotateY / winsize.width * mousepos.x - tiltRotation.rotateY) : 0;

// apply transform

applyRoomTransform({'translateX' : roomTransform.translateX, 'translateY' : roomTransform.translateY, 'translateZ' : roomTransform.translateZ, 'rotateX' : rotX, 'rotateY' : rotY});

});

};

document.addEventListener('mousemove', onMouseMove);

// select seats control click (intro button): show the room layout

var onSelectSeats=function() {

classie.remove(intro, 'intro--shown');

classie.add(plan, 'plan--shown');

classie.add(playCtrl, 'action--faded');

zoomOutScreen(function() {

showTiltCtrl();

});

};

selectSeatsCtrl.addEventListener('click', onSelectSeats);

// play video

playCtrl.addEventListener('click', videoPlay);

// ended video event

video.addEventListener('ended', videoLoad);

// window resize: update window size

window.addEventListener('resize', throttle(function(ev) {

winsize={width: window.innerWidth, height: window.innerHeight};

scaleRoom();

}, 10));

}

function showTiltCtrl() {

classie.add(tiltCtrl, 'action--shown');

}

// select a seat on the seat plan

function selectSeat(planseat) {

if( classie.has(planseat, 'row__seat--reserved') ) {

return false;

}

if( classie.has(planseat, 'row__seat--selected') ) {

classie.remove(planseat, 'row__seat--selected');

return false;

}

// add selected class

classie.add(planseat, 'row__seat--selected');

// the real seat

var seat=seats[planseats.indexOf(planseat)];

// show the seat′s perspective

previewSeat(seat);

}

// preview perspective from the selected seat. Moves the camera to that position.

function previewSeat(seat) {

// disable tilt

disableTilt();

// change transition properties

applyRoomTransition();

// getComputedStyle: https://css-tricks.com/get-value-of-css-rotation-through-javascript/

var st=window.getComputedStyle(seat.parentNode, null),

tr=st.getPropertyValue('-webkit-transform') ||

st.getPropertyValue('-moz-transform') ||

st.getPropertyValue('-ms-transform') ||

st.getPropertyValue('-o-transform') ||

st.getPropertyValue('transform') ||

'Either no transform set, or browser doesn′t do getComputedStyle';

if( tr==='none' ) return;

var values=tr.split('(')[1],

values=values.split(')')[0],

values=values.split(','),

// translateY value of this seat′s row

y=values[13],

// translateZ value of this seat′s row

z=values[14],

// seat′s center point (x-axis)

seatCenterX=seat.offsetLeft + side_margin/2 + seat.offsetWidth/2,

// translateX, translateY and translateZ values

tx=seatCenterX < roomsize.x/2 ? initTransform.translateX + (roomsize.x/2 - seatCenterX) : initTransform.translateX - (seatCenterX - roomsize.x/2),

ty=roomsize.y/2 - (roomsize.y - Math.abs(y)) + seat.offsetHeight + 10, // add a small extra

tz=Math.abs(z)+10, // add a small extra

// calculate how much to rotate in the x-axis (the more close to the screen the more we need to rotate)

firstRowZ=roomsize.z - row_front_gap,

lastRowZ=firstRowZ - (totalRows - 1 + row_gap_amount) * row_back,

// calculate how much to rotate in the y-axis (the more close to the screen the more we need to rotate.

// Also the same applies when the distance from the center of the room to both sides increases.

// for the last row:

minRotY_1=0, maxRotY_1=20, // min and max values for y rotation

initialTranslationX=0, finalTranslationX=roomsize.x/2,

rotY_1=lineEq(minRotY_1, maxRotY_1, initialTranslationX, finalTranslationX, tx),

// for the first row:

minRotY_2=0, maxRotY_2=50, // min and max values for y rotation

rotY_2=lineEq(minRotY_2, maxRotY_2, initialTranslationX, finalTranslationX, tx),

// final:

rotY=lineEq(rotY_1, rotY_2, lastRowZ, firstRowZ, Math.abs(z));

// room transforms

roomTransform={

translateX : tx,

translateY : ty,

translateZ : tz,

rotateX : 0,//rotX,

rotateY : rotY

};

// apply transform

applyRoomTransform();

onEndTransition(room, function() {

removeRoomTransition();

});

}

function zoomOutScreen(callback) {

applyRoomTransition({'speed' : 1500, 'easing' : 'ease'});

applyRoomTransform(initTransform);

onEndTransition(room, function() {

removeRoomTransition();

callback.call();

});

}

function disableTilt() {

classie.add(tiltCtrl, 'action--disabled');

tilt=false;

}

function enableTilt() {

classie.remove(tiltCtrl, 'action--disabled');

tilt=true;

}

function videoPlay() {

// hide the play control

classie.remove(playCtrl, 'action--shown');

video.currentTime=0;

video.play();

}

function videoLoad() {

// show the play control

classie.add(playCtrl, 'action--shown');

video.load();

}

init();

})(window);

影音烧友说:声学调试验收犹如西医明明白白的死;耳朵收货犹如中医稀里糊涂的活!

真忽悠,假声学,国标世标你晓得?主观听音怎么核?影音不测是乱扯!

关于私家影院和听音室一直以来有很多关于效果方面的主观描述及客观指标检测,特别是私家影院THX和HAA培训,更是在这方面做了一些科普工作,极大的推动了行业的发展,我们先来看一下主观方面的描述。

先看一下HAA培训认证(非国际标准),THX也基本差不多,主观描述总是不够具体,所以就只列一个。

Home Acoustics Alliance Level I
Seminar

Sound Quality Metrics 音质标准

? Clarity; dialogue, detailing, spatial cues 清晰度;对白,细节,空间信息

? Focus; imaging localization, all listeners?声像定位

? Envelopment; no gaps, smooth panning 包围感;没有间隙,声音转向自然

? Response; target response curve 频率响应;符合目标曲线

? Dynamics; power, ambient noise动态范围;功率,背景噪音

? Consistency; seat-to-seat uniformity 一致性;座位间差异很小

然而对于实际项目的调试验收,这个可是相当难办的,所以还是必须要有特别具体的量化指标才能好界定和办事,今天我主要分享一下目前我找到的国际标准的参考。

几乎所有标准里,都首要把空间本底噪音放在第一位,所以我们也从第一项开始说起。


第一项, 空间本底噪音:



这是THX二级培训中的NC25标准以内的噪音水平属于非常安静,计权声压低于约34DBA。

而我们国家标准是用的RC(大概是RC比NC高10个数字,几乎所有软件 都可以设置切换RC和NC显示 )国内标准值:



《国家标准GB 50118-2010 民用建筑隔声设计规范》中4.1.1卧室表

4.1.1 卧室、起居室(厅)内的允许噪声级,注意看,此标准是A计权,从前文可以得知,A计权对超低频是大幅度削减的;所以基本是只测量除超低频以上的全频段的噪声音量;一般在检测空间噪声时都是用此标准;



上面的标准对于影院超低频噪音是基本检测不出来的,并且一些级别不高的CMA机构也没有能力检测,打电话去如果说要测超低频,就会告知测不了。所以要看下面这一个国家标准:
《GB 22337-2008 社会生活环境噪声排放标准》里面在3.4里有很关键的一句“除特别指明外”以前这句后面对应的表3,最低频率到了31.5HZ的5个倍频的(倍频带声压级)单位:dB,没再标注A计权;



下面的是我听音室校准后的实测值:RC位于RC35内,NC位于NC25;



第二项:早期反射声:

国际标准依据条款为 国际电联ITU-R BS.1116-1 8.3.3.1

早期反射声
在比直达声晚15毫秒内,1-8KHZ的早期反射声至少衰减10DB。
8.3.3.1 Early?reflections
which?reach?the?listening?area?during?a?time
interval?up?to?15ms?after?the?direct?sound,?should?be?attenuated?in?the?range?1-8?kHz?by?at?least?10?dB?relative?to?the
direct?sound。


软件实测值参考:125毫秒开始到140毫秒时衰减22.7DB;



第三项 空间混响时间RT60


国际标准有国际电联ITU-R BS.1116-1、AESTD1001.1.01-10,还有行业不具备法律效力的培训认证标准:THX和HAA培训最佳混的值引用于PMI,这些国际标准值也是PMI里最佳混响的下限值;然后国家标准为《电影院建筑设计规范JGJ58-2008》
例如223立方米听音室
国际电联ITU-R BS.1116-1标准223立方米最佳混响时间: 0.33秒


AESTD1001.1.01-10 标准223立方米最佳混响时间: 0.33秒



THX和HAA认证所引用的PMI标准223立方米混响时间范围为0.33秒到0.45秒,最佳值为0.39秒;


国家标准 《电影院建筑设计规范JGJ58-2008》里223立方面混响时间范围为500HZ上限RT60不高于0.32秒,下限不低于0.18秒


实测值:
XTZ声学仪测试:125HZ到4KHZ的6个倍频混响时间0.33秒到0.45秒达到0.39秒正负0.06秒;




国际互认法律效力的国家CMA检测报告:
空间对角线平均等分4个点测试125HZ到4KHZ,共24个频点,混响时间全部位于0.33秒到0.43秒内,达到0.38秒正负0.05秒;






第四项:低频频响:
目前能找到的最新的国际标准为ISO 2969-2015,这个是电影院标准;(从标准中可以看出,影片制作也越来越变态,5HZ都做进去了)



ISO 2969-20154.测量方法
使用一组四个全向和校准的麦克风来测量电声响应连接到麦克风多路复用器开关(不是混音器),其输出连接到
音频1/3倍频程频段频谱分析仪。
4.Methods of Measurement
Measure the electroacoustic response with a set of
four omnidirectional and calibrated microphones
connected to a microphone
multiplexer switch (not a mixer), the output of which is connected to
an
audio-frequency 1/3-octave band spectrum analyser.
4.3现代音轨上低频效果声道的带宽从5 Hz扩展到120赫兹。 从大约25Hz到120Hz需要线性重低音扬声器响应。该
120赫兹音轨切断非常陡峭,因此合适的低音扬声器需要上面几乎没有响应125赫兹。
有关低音炮调节的信息,请参阅ISO 22234:2005。
许多房间在低频效应通道内具有一个或多个主要共振频率带宽。 如果没有阻尼,这可能导致每次特征性的低频“振铃”
音轨包含低频信息。
大多数影院处理器至少有一个用于低音炮带通的参量均衡器。 调整后,之间的反应25 Hz和120
Hz应平坦至±3 dB。
4.3 The
bandwidth of the low-frequency effects channel on a modern soundtrack extends
from 5 Hz
to 120 Hz. A linear sub-woofer acoustic response is desirable from
approximately 25 Hz to 120 Hz. The
120 Hz soundtrack cut-off is extremely steep, so a suitable sub-woofer need have little response above
125 Hz. For
information on subwoofer adjustment refer to ISO 22234:2005.
Many rooms have
one or more dominant resonant frequencies within the low-frequency effects
channel
bandwidth. If not damped this can lead to a characteristic
low-frequency“ringing” every time the
soundtrack contains low-frequency
information. Most cinema B-chain processors have at least one
parametric
equalizer for use within the sub-woofer bandpass. After adjustment, the response
between
25 Hz and 120 Hz shall be flat to within ±3 dB.

着重说一下这个超低频频响测试的方法:

上面说了几个关键点:
1.至少4个MIC风在听音区均衡覆盖;
2.4个MIC要能复合出一条整体曲线;
3.频谱仪显示精度三分之一倍频,25HZ到120HZ起伏在正负3DB内;



关于听音区这个多点均衡测试分析,THX里也有介绍(不是国家国际标准)



Frequency Response Calibration 频率响应校准 Spatial Average 空间平均
With Multiplexer set up 4 microphones around main seat locations 使用麦克风多路混合器在主听音区域设置4个麦克风

Set mic capsules at seated ear location 测试麦克风固定在入座后人耳的高度
Aim mics towards front speakers 将麦克风指向前置扬声器
Without multiplexer move mics to four locations and average results after determining unity gain 如果没有麦克风多路混合器,请在四个地点分别测试,然后取平均值



那我们私家影院有的只有一排三个或2个位置,按标准来可以把检测范围缩小为3个点或2个点,如果有4个位置或两排以上的,符合测试条件的就应该按标准来落实
以我视听室为例:
空间只有一排沙发,那就三只话筒,测试三个位置的低频频响,然后Smaart里勾选3只话筒后实时生成动态的整体频响曲线:


测试结果:蓝色曲线为皇帝位左边座位,黄色为皇帝位右边座位,紫色为正中皇帝位,粉色:整个听音区频响;
双低低音炮测试:粉色整个听音区频响3分之1倍频精度显示为20HZ到80HZ正负3DB内;



当然以往的调试也是包括并不限于:
REW测频响也是有必要的:
双炮无EQ无低切15HZ到80HZ曲线无平滑基本正负2.5DB



瀑布图WaterFall消散最慢的点经过300毫秒从86DB衰减到约60DB,衰减量约26DB;



分频点和等响曲线参考调试;




Smaart测试低频频响:Smaart双炮实测曲线显示精度超48分之1以上无平滑处理,15HZ到80HZ正负2.5DB



低音炮与音箱各自的频响,相位以及衔接后的频响曲线:



因为精力和时间有限,所以目前能找到的具备国家和国际法律诉讼效力的标准就这些,欢迎大家讨论和补充!
有的爱好都就说了,西医明明白白的死;中医稀里糊涂的活,那最后咋们不看里面怎么实现的,直接验结果吧!对于这些测试需要一些知识和动力能力,对于一般爱好者确实难以落实,接下来我再分享一些主观核对的检查办法。
现在新款的手机录音录像的能力越来越强(高端录音棒更好),所以我们在没有仪器或不方便的情况下,还可以用一些黑盒测试核对办法,就是不管他怎么处理的,除了现场皇帝位听之外,用手机在皇帝位把声音录下来,然后与各平台,例如网易云,QQ音乐这些不充值在线MP3的同一首作核对,判断回放的保证度,作出相对判断。AV的推荐演唱会,因为多数演唱会除了发行蓝光外,出CD的立体声Live版才是销售的主力,并且录音和制作一般都是同一团队现实录制和后期。电影这个很难找到立体声版本,所以用演唱会是一个比较好的检验核对影院的方式。
视频录下来后发在微信上,同时播放网易云或QQ音乐的同一首,微信上的视频一播放,网易云或Qq音乐就会自动暂停,同样,微信上的视频一暂停,网易云或QQ音乐就会继续播放,可以毫秒级切换核对语气和音调。如果录音比起来有比较高的相像度,那证明系统回放还是有比较的还原回放能力的。
随便放两段我HIFI系统在皇帝位的录音,推荐手机从电脑B站APP打开,然后网易云或Qq音乐识曲,就可以AB对比核对了。



《阿姐鼓》朱哲琴皇帝位录音:无广告B站: https://www.bilibili.com/video/av80733421


腾讯视频: https://v.qq.com/x/page/y3041n57mk6.html

《Hotel California (Live)》Eagles 黄帝位录音 :无广告B站: https://www.bilibili.com/video/av80727650


腾讯视频: https://v.qq.com/x/page/h3041aks61r.html


影院的话我放一段大家都比较熟悉的蔡大妈演唱会吧:

演唱会皇帝位录音 蔡琴《未识绮罗香(Live)》 :无广告B站:


腾讯视频: https://v.qq.com/x/page/p3076pvacvm.html
-

不出户就能带你看遍全球博物馆

抖音号:四维看展 (2014305848)

微信视频号:四维时代科技

微信公众号:四维时代科技

伴随电影院逐渐复工,很多小伙伴都计划周末去看电影。但你知道吗?电影选座可是一门“大学问”。比如,无论从医学常识还是视野夹角来说,为了避免产生视觉疲劳,都应该避选第一排。



于是有小伙伴一脸不屑:“那我选最中间不就好了吗”,但很快网上又传出一个说法,电影院中“最佳位置”不在最中间。所以,到底哪个位置才是电影院的“最优C位”?


事实上,要挑到好座位,需要考虑到屏幕大小、屏幕角度甚至是阶梯角度。接下来,四维看看Pro带你“重返”影院,一分钟教你选出最好座位。


复制粘贴,进入3D电影院

四维看看Pro1分钟带你“辨别”好座位

https://www.4dkankan.com/showProPC.html?m=dTS3sndNB&open=wx_friend



1

冷知识1:一分钟用最科学的方式

找出电影院的“黄金座位”


哪个座位是黄金座位?相信很多人的答案是“最中间”。不过根据科学研究,人的眼睛在看电视或者电影的时候会偏向左边。因此,无论在哪个影院,最中间的位置都不是“最佳位置”。

图|“电影院最中间的位置是黄金座位吗?”


为找到电影院里的“黄金座位”,美国电影与电视工程师协会做了一个研究:最佳座位应该要符合“座位到荧幕顶端的视线与水平方向的夹角必须要<35°”这个标准。



如果按照这个要求,假设我们要去的影厅有15排座位,每排座位水平距离为1米,观众席的座位呈15°上升,这么算下来:第6-10排的座位是最好的。


综合来看,电影院小厅(8-14排)最佳座位处于5-6排之间;中厅(15-20排)最佳位置处于7-8排之间;IMAX厅或大厅(21-25排)最佳座位处于9-10排之间。如果你记不清楚第几排,那么只要记得:如果看2D电影,坐在2/3的位置都是合适的观影位置。


图via@央视新闻



2

冷知识2:如果你看的是3D电影,

最好的座位在1/2处


如果你看的是3D电影,最好的座位则变成了“荧幕到放映窗口1/2的位置”。


图| 2D电影最佳位置在2/3处3D电影最佳位置在1/2处


为什么看3D电影时,座位需要更靠前?这是基于3D电影的播放原理。与同样荧幕大小的2D电影相比,观众带上眼镜后感觉画面会有一定程度的缩小,荧幕亮度会减弱40%左右,所以选前面一点的座位,观影效果更好。


图| 看3D电影时,往前坐视觉更具冲击力



3

冷知识3:电影院里哪一排座位,

视觉和听觉的效果最好?


电影院里哪一排座位,视觉、听觉效果最好?


曾有电影院的工作人员揭秘了一个细节:“应该是所有位置中的2/3区域。因为每个电影院完工时,都会进行声场测试,测试人员所站的位置就是2/3区域。”他们认为,特别是看枪战、飙车戏码的大片时,在中后排位置的音效是最好的。


图|电影院里,哪个座位的视觉和听觉的位置最好?


看不同类型的电影,选座方法也有讲究?前段时间,知乎上也有网友分享了他的选座技巧。


比如,观看国产大片或好莱坞动作大片时,最佳位置应该是在第7排正中间,校正标准为平视视线最大区间刚好到达银幕四方向边缘,无需转头即可观看银幕内全部内容。


又比如,观看文艺片、剧情片和喜剧片(包括大量演员独白和特写镜头(如《了不起的盖茨比》)时,可以更靠前一些,这样能观察到演员的表演细节,同时无需顾及全部画面信息获取。



4

冷知识4:为什么电影院的座椅

大多都是红色?


我们去电影院的时候肯定会注意到一个现象:细心的人会发现,大部分的电影院座椅颜色仿佛是“全国统一配色”——红色。



事实上,把电影院座位设计成红色的背后原因,是为了“增强观影体验”。从科学原理层面解释,我们人类的眼睛在白天和晚上,对于视觉所见物体的处理方法是不同的,白天的时候光线非常的亮,人类对黄色最为敏感。


到了晚上灯光暗弱的时候,人类会用杆状细胞来处理视觉,此时人类眼睛就对绿色最为敏感,反而刺眼的红色最先会消失。因此,当电影院的影片开始播放的时候,所有的灯光关闭,我们瞬间就看不到了红色座椅,这有利于观众迅速的投入达到观影的最佳状态。


瞬间觉得,奇怪的知识点又增加了一个...



除外,还有人认为电影诞生于19世纪末期;歌剧起源于17世纪,而历史上的的歌剧院座椅就是红色的。所以,我们现在的电影院就是参照当时的剧院来设计。


图| 1637年,意大利建立了第一座歌剧院圣卡西亚诺剧院


5


冷知识5:为什么电影院里要装监控?


很多情侣认为“黑灯瞎火”的电影院也许是个不错的私密空间。过往有一名网红博主大半夜在社交平台上发了一条微博,分享了一个行业内不为人知的秘密。


其中,最让大家心惊肉跳的是来自一位从事影院行业网友的爆料,大意是小情侣别在看电影的时候太亲热,因为“后面放映员和监控都看得到”!



没想到,三天时间引来了10万以上网友的留言。


随后,一名网友附上了据说是影院工作人员提供的监控室场景和监控截图,果然除了大屏幕外,放映厅内各个位置都看得清清楚楚,也拍到了观众一些不雅的坐姿和动作。


“电影院几乎在每个角落都设置了红外线夜视摄像头,还是360度无死角的。”微博这条留言瞬间让整个评论区又一次炸毛。



图|在这家影院里,只有最后一排观众席最靠两边的位置,不在监控视野中


舆论发酵后,一位影院的经理站出来解释道:“我们每天都忙得很,真没功夫盯着你们看,摄像头主要是看电影是否正常播放,还有帮助顾客找回在影厅丢失的物品。”


“假如观众的私密举动在影厅内被监控拍下,影院有权发布相关画面吗?”有律师明确表示,如果电影院工作人员恶意在网上发布监控拍摄到的部分公众在影院里的有违公序良俗的行为,情节严重、社会影响恶劣的,可能被追究刑事责任。



6


冷知识6:电影院拍照,竟是违法行为?


在电影院录像2分钟,算违法吗?


很多观众在看电影时,总想拍照摄屏发个朋友圈。根据《电影产业促进法》规定,未经权利人许可,任何人不得对正在放映的电影进行录音录像,影院有权要求不听劝阻的盗录者离场。


为了保护电影版权,行业内曝光了一个不为人知的小秘密:即使观众偷拍技术够好,那还是跑不掉。因为在影院“摄屏”拍下的电影画面,会包含影片特制的防盗版数码水印(一般肉眼看不到),电影公司可通过这种水印,能精确追查到盗版来源,包括盗录来自于哪家影院、影厅以及精准的时间。



除外,在电影院拍照可能会让你身边的观众非常不爽,据闻就曾有一名女子因在观影时开闪光灯摄影被打,看完新闻后网友们纷纷感慨:“再也不敢看电影的时候发朋友圈了!”



7

冷知识7:在印度,看电影前

必须唱52秒国歌


看完以上奇奇怪怪的冷知识,很多人心里嘀咕:“我只是看一场电影,怎么有那么多规矩?”事实上,如果你去过其他国家看一场电影,我国电影院的这些规矩真的不算什么。


举个例子,以盛产宝莱坞电影的人口大国印度来说,看电影前需要老老实实过安检,并且会举行一场仪式感满满的活动——唱52秒的国歌:电影正式放映前,一般有10~15分钟广告,当大银幕上出现印度国旗的飘扬画面时,观众全体起立唱国歌,这个严肃的仪式结束后,才开始正式放映影片。


图|印度最“接地气”电影院:能容纳1200人,开播前还要唱国歌


当电影放到精彩或感人之处,电影屏幕上还会忽然打出一行类似“现在休息,小吃部已开始为大家提供小吃”这样的字幕,最后影院工作人员开始在电影院内售卖小吃。


一位印度导演表示:“在难以见到KTV和酒吧的印度城市里,电影院既是印度人的夜总会,也是印度人的神庙,因此一个电影院影厅能容纳1200人。”


这不禁让小编也感到好奇:

假如在国内开一个1200人的电影院

会长啥样?又会发生哪些有趣的事情?


“看来,还是自家的电影院舒服啊!”



足不出户就能看遍全国博物馆

关注微信公众平台【四维时代科技】

随时随地,720°在线看展


3D精品文物、AR/VR体验

最新3D博物馆和文博资讯

都能在这里找到