Update Viewport On Resize

Three.js and WebGL 3D Programming Crash Course Three.js & WebGL 3D Programming
4 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€67.17
List Price:  €95.97
You save:  €28.79
£55.84
List Price:  £79.78
You save:  £23.93
CA$100.80
List Price:  CA$144.01
You save:  CA$43.20
A$112.68
List Price:  A$160.98
You save:  A$48.30
S$95.16
List Price:  S$135.95
You save:  S$40.79
HK$543.23
List Price:  HK$776.08
You save:  HK$232.84
CHF 63.03
List Price:  CHF 90.05
You save:  CHF 27.01
NOK kr794.99
List Price:  NOK kr1,135.75
You save:  NOK kr340.76
DKK kr501.02
List Price:  DKK kr715.78
You save:  DKK kr214.75
NZ$124.35
List Price:  NZ$177.65
You save:  NZ$53.30
د.إ257.07
List Price:  د.إ367.26
You save:  د.إ110.19
৳8,350.53
List Price:  ৳11,929.84
You save:  ৳3,579.31
₹5,987.45
List Price:  ₹8,553.87
You save:  ₹2,566.42
RM312.96
List Price:  RM447.10
You save:  RM134.14
₦108,274.53
List Price:  ₦154,684.53
You save:  ₦46,410
₨19,454.09
List Price:  ₨27,792.76
You save:  ₨8,338.66
฿2,378.12
List Price:  ฿3,397.46
You save:  ฿1,019.34
₺2,466.48
List Price:  ₺3,523.69
You save:  ₺1,057.21
B$432.51
List Price:  B$617.89
You save:  B$185.38
R1,311.95
List Price:  R1,874.30
You save:  R562.34
Лв131.43
List Price:  Лв187.76
You save:  Лв56.33
₩103,223.92
List Price:  ₩147,469.07
You save:  ₩44,245.14
₪257.31
List Price:  ₪367.60
You save:  ₪110.29
₱4,072.64
List Price:  ₱5,818.31
You save:  ₱1,745.67
¥11,041.56
List Price:  ¥15,774.33
You save:  ¥4,732.77
MX$1,420.31
List Price:  MX$2,029.11
You save:  MX$608.79
QR254.14
List Price:  QR363.08
You save:  QR108.93
P970.50
List Price:  P1,386.50
You save:  P415.99
KSh9,063.70
List Price:  KSh12,948.70
You save:  KSh3,885
E£3,560.93
List Price:  E£5,087.27
You save:  E£1,526.33
ብር8,897.26
List Price:  ብር12,710.92
You save:  ብር3,813.65
Kz63,830.88
List Price:  Kz91,190.88
You save:  Kz27,360
CLP$69,315.99
List Price:  CLP$99,027.09
You save:  CLP$29,711.10
CN¥510.87
List Price:  CN¥729.84
You save:  CN¥218.97
RD$4,256.60
List Price:  RD$6,081.12
You save:  RD$1,824.52
DA9,489.42
List Price:  DA13,556.89
You save:  DA4,067.47
FJ$162.54
List Price:  FJ$232.21
You save:  FJ$69.67
Q538.26
List Price:  Q768.97
You save:  Q230.71
GY$14,619.81
List Price:  GY$20,886.35
You save:  GY$6,266.53
ISK kr9,747.50
List Price:  ISK kr13,925.60
You save:  ISK kr4,178.10
DH704.68
List Price:  DH1,006.73
You save:  DH302.05
L1,290.62
List Price:  L1,843.82
You save:  L553.20
ден4,134.98
List Price:  ден5,907.37
You save:  ден1,772.38
MOP$559.01
List Price:  MOP$798.63
You save:  MOP$239.61
N$1,299.34
List Price:  N$1,856.28
You save:  N$556.93
C$2,571.30
List Price:  C$3,673.45
You save:  C$1,102.14
रु9,517.06
List Price:  रु13,596.38
You save:  रु4,079.32
S/260.20
List Price:  S/371.74
You save:  S/111.53
K283.61
List Price:  K405.18
You save:  K121.56
SAR262.83
List Price:  SAR375.49
You save:  SAR112.65
ZK1,933.89
List Price:  ZK2,762.82
You save:  ZK828.92
L334.30
List Price:  L477.59
You save:  L143.29
Kč1,691.03
List Price:  Kč2,415.86
You save:  Kč724.83
Ft27,618.75
List Price:  Ft39,457.05
You save:  Ft11,838.30
SEK kr770.19
List Price:  SEK kr1,100.32
You save:  SEK kr330.12
ARS$72,002.55
List Price:  ARS$102,865.20
You save:  ARS$30,862.64
Bs482.86
List Price:  Bs689.84
You save:  Bs206.97
COP$308,627.53
List Price:  COP$440,915.37
You save:  COP$132,287.84
₡35,480.70
List Price:  ₡50,688.88
You save:  ₡15,208.18
L1,775.44
List Price:  L2,536.46
You save:  L761.01
₲544,980.94
List Price:  ₲778,577.57
You save:  ₲233,596.63
$U3,110.44
List Price:  $U4,443.67
You save:  $U1,333.23
zł287.20
List Price:  zł410.31
You save:  zł123.10
Already have an account? Log In

Transcript

Hello, in this video, we are going to look at updating the viewport on resize might be listening to what I've just said, I'm thinking what the hell does that mean? First of all, let's just show you the problem. And that's exactly what it is. It is a problem that we are trying to fix. So if I just go to our scene, we've got this nice cube that's rotating. It looks fine.

Scales, everything. And it's the same principle if there was an entire world there. But watch what happens if I were to resize the browser. The actual viewport, the content within our world does not adjust, it doesn't move. It doesn't resize it don't do any of that stuff, which is obviously very, very bad. Let me show you a number shift.

So if I were to refresh it, so the actual initial browser sizes Well, this is what happens when I resize it, we get white because it hasn't been nothing's been rendered over here to Six, very simple, we've just got to detect when the viewport has been resized, aka your browser and then just update the camera and the renderer. and update the projection matrix was all simple stuff. So if you put this code after the render has been initialized and the document dot body has been set, to want to do window dot add event listener, I'm gonna put resources that's the events that we're listening for. When the resource event occurs, we want to call a method or we want to run this method that we are coding right here. And what we want to do is ball with equals window.in a way you can guess what we're gonna do next ball height equals window, dot inner height.

No renderer dot set sois. We know we know the width and the height. There we go like so very similar to what we've done right here as an extra task. What you could do is actually no, that wouldn't work. Sorry, just ignore me. I'm gonna say you could abstract these values.

Actually, you could do that. You could abstract the declaration of the width and the height variables outside and then just set those values so they can be used. Where you want an extra task for you to do? Now we're gonna do camera dot aspect, we're gonna update the aspect because as you can see, it may not keep the aspect ratio when we saw the animated the aspect ratio when we saw it. So we've got to adjust for the game very simple. You just do camera dot aspect equals width divided by height.

So that's how you calculate the aspect ratio. And finally you do camera.de projection matrix. This is a method and this just updates well the projection matrix and finally, Mr. semicolon, so put that save it, we go back refresh. We've got our cube is spinning. So let's see what happens when we resize it. As you can see, the actual contents of our scene are moving and if we resize the height, it also works Sources of content and as you can see, is keeping the exact ratio.

Our objects don't look distorted or squashed or stretched or anything like that. So in this video, we covered how to update the viewport on resource. Very simple, only a few lines of code, but something very crucial and something that really needed to be covered earlier on in the series. Thank you for watching. If you have any questions, feel free to ask. And as usual, thank you for watching, and I hope you have a great day.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.