@@ -42,6 +42,11 @@ THREE.CSS3DRenderer = function () {
4242 var _widthHalf , _heightHalf ;
4343
4444 var matrix = new THREE . Matrix4 ( ) ;
45+
46+ var cache = {
47+ camera : { fov : 0 , style : '' } ,
48+ objects : { }
49+ } ;
4550
4651 var domElement = document . createElement ( 'div' ) ;
4752 domElement . style . overflow = 'hidden' ;
@@ -167,11 +172,18 @@ THREE.CSS3DRenderer = function () {
167172 }
168173
169174 var element = object . element ;
175+ var cachedStyle = cache . objects [ object . id ] ;
176+
177+ if ( cachedStyle === undefined || cachedStyle !== style ) {
178+
179+ element . style . WebkitTransform = style ;
180+ element . style . MozTransform = style ;
181+ element . style . oTransform = style ;
182+ element . style . transform = style ;
170183
171- element . style . WebkitTransform = style ;
172- element . style . MozTransform = style ;
173- element . style . oTransform = style ;
174- element . style . transform = style ;
184+ cache . objects [ object . id ] = style ;
185+
186+ }
175187
176188 if ( element . parentNode !== cameraElement ) {
177189
@@ -193,10 +205,16 @@ THREE.CSS3DRenderer = function () {
193205
194206 var fov = 0.5 / Math . tan ( THREE . Math . degToRad ( camera . fov * 0.5 ) ) * _height ;
195207
196- domElement . style . WebkitPerspective = fov + "px" ;
197- domElement . style . MozPerspective = fov + "px" ;
198- domElement . style . oPerspective = fov + "px" ;
199- domElement . style . perspective = fov + "px" ;
208+ if ( cache . camera . fov !== fov ) {
209+
210+ domElement . style . WebkitPerspective = fov + "px" ;
211+ domElement . style . MozPerspective = fov + "px" ;
212+ domElement . style . oPerspective = fov + "px" ;
213+ domElement . style . perspective = fov + "px" ;
214+
215+ cache . camera . fov = fov ;
216+
217+ }
200218
201219 scene . updateMatrixWorld ( ) ;
202220
@@ -207,10 +225,16 @@ THREE.CSS3DRenderer = function () {
207225 var style = "translate3d(0,0," + fov + "px)" + getCameraCSSMatrix ( camera . matrixWorldInverse ) +
208226 " translate3d(" + _widthHalf + "px," + _heightHalf + "px, 0)" ;
209227
210- cameraElement . style . WebkitTransform = style ;
211- cameraElement . style . MozTransform = style ;
212- cameraElement . style . oTransform = style ;
213- cameraElement . style . transform = style ;
228+ if ( cache . camera . style !== style ) {
229+
230+ cameraElement . style . WebkitTransform = style ;
231+ cameraElement . style . MozTransform = style ;
232+ cameraElement . style . oTransform = style ;
233+ cameraElement . style . transform = style ;
234+
235+ cache . camera . style = style ;
236+
237+ }
214238
215239 renderObject ( scene , camera ) ;
216240
0 commit comments