Adds MMSys 18

This commit is contained in:
Thomas Forgione 2019-08-28 17:43:21 +02:00
parent 2370d41471
commit afb8bee33d
No known key found for this signature in database
GPG Key ID: 203DAEA747F48F41
15 changed files with 5515 additions and 432 deletions

37
assets/optimize-curves.js Normal file
View File

@ -0,0 +1,37 @@
const fs = require('fs');
const optimum = 100;
function find(path) {
let output = [];
for (let content of fs.readdirSync(path, {withFileTypes: true})) {
if (content.isDirectory()) {
output.push(...find(path + '/' + content.name));
} else {
output.push(path + '/' + content.name);
}
}
return output;
}
function optimizeCurve(path) {
let input = fs.readFileSync(path, 'utf-8')
.split('\n')
.map((x) => x.split(' '));
let output = [input[0]];
let step = Math.floor(input.length / optimum);
for (let i = 1; i < input.length; i += step) {
output.push(input[i]);
}
fs.writeFileSync(path.slice(0, - '-full.dat'.length) + '.dat', output.map((x) => x.join(' ')).join('\n'));
}
for (let file of find('.')) {
if (file.endsWith('-full.dat')) {
optimizeCurve(file);
}
}

View File

@ -1,420 +1,102 @@
x y1 y2 x y1 y2
50 0.131942 0.238320 1 0.005755 0.009458
100 0.205725 0.356426 210 0.283952 0.443984
150 0.242529 0.399903 419 0.371935 0.566748
200 0.278507 0.436995 628 0.426774 0.651649
250 0.303498 0.470774 837 0.457305 0.715185
300 0.326138 0.501938 1046 0.487327 0.765409
350 0.345066 0.530680 1255 0.507299 0.807756
400 0.366400 0.557247 1464 0.523058 0.842872
450 0.380507 0.581496 1673 0.532736 0.872979
500 0.397580 0.603497 1882 0.548073 0.897718
550 0.412134 0.623504 2091 0.564363 0.918185
600 0.421523 0.641811
650 0.428828 0.659131
700 0.434932 0.675321
750 0.441448 0.690581
800 0.449477 0.705094
850 0.459193 0.718605
900 0.465525 0.731273
950 0.473074 0.743392
1000 0.480954 0.755044
1050 0.487500 0.766290
1100 0.492953 0.777063
1150 0.497089 0.787407
1200 0.501430 0.797337
1250 0.507154 0.806836
1300 0.510778 0.815817
1350 0.517049 0.824390
1400 0.521230 0.832663
1450 0.522772 0.840678
1500 0.524264 0.848443
1550 0.526208 0.855931
1600 0.529293 0.863128
1650 0.532167 0.869959
1700 0.534288 0.876448
1750 0.539359 0.882622
1800 0.543343 0.888526
1850 0.546010 0.894202
1900 0.548814 0.899647
1950 0.552221 0.904834
2000 0.556037 0.909772
2050 0.560241 0.914487
2100 0.565780 0.918977
2150 0.570375 0.923214
2200 0.573157 0.927178
2250 0.578510 0.930889
2300 0.584053 0.934271 2300 0.584053 0.934271
2350 0.593370 0.937358 2509 0.625557 0.946067
2400 0.601812 0.940252 2718 0.663158 0.955622
2450 0.617184 0.943003 2927 0.687540 0.963509
2500 0.624025 0.945608 3136 0.694305 0.969471
2550 0.630036 0.948090 3345 0.720457 0.974755
2600 0.637701 0.950440 3554 0.742463 0.979297
2650 0.646357 0.952698 3763 0.757721 0.983233
2700 0.653498 0.954861 3972 0.767483 0.986583
2750 0.665690 0.956936 4181 0.778537 0.989490
2800 0.675088 0.958936 4390 0.805164 0.992003
2850 0.686781 0.960854 4599 0.813789 0.994157
2900 0.686909 0.962623 4808 0.826447 0.996059
2950 0.687540 0.964227 5017 0.843146 0.997610
3000 0.687849 0.965722 5226 0.858641 0.998703
3050 0.688321 0.967139 5435 0.867922 0.999425
3100 0.693394 0.968524 5644 0.890417 0.999873
3150 0.694474 0.969839 5853 0.914330 1.000000
3200 0.705058 0.971154 6062 0.939489 1.000000
3250 0.708841 0.972438 6271 0.960974 1.000000
3300 0.710565 0.973670 6480 0.975065 1.000000
3350 0.720899 0.974870 6689 0.982177 1.000000
3400 0.725468 0.976020 6898 0.987715 1.000000
3450 0.731085 0.977133 7107 0.989260 1.000000
3500 0.736501 0.978201 7316 0.990782 1.000000
3550 0.738313 0.979218 7525 0.993237 1.000000
3600 0.743687 0.980205 7734 0.994721 1.000000
3650 0.752294 0.981191 7943 0.995942 1.000000
3700 0.754119 0.982101 8152 0.996636 1.000000
3750 0.757645 0.983005 8361 0.997071 1.000000
3800 0.758436 0.983841 8570 0.997448 1.000000
3850 0.759179 0.984663 8779 0.997860 1.000000
3900 0.762766 0.985485 8988 0.998217 1.000000
3950 0.767053 0.986257 9197 0.998779 1.000000
4000 0.768039 0.986997 9406 0.999129 1.000000
4050 0.768951 0.987736 9615 0.999463 1.000000
4100 0.770770 0.988425 9824 0.999635 1.000000
4150 0.773462 0.989082 10033 0.999694 1.000000
4200 0.782674 0.989740 10242 0.999875 1.000000
4250 0.784454 0.990392 10451 0.999880 1.000000
4300 0.791198 0.990968 10660 1.000000 1.000000
4350 0.800382 0.991543 10869 1.000000 1.000000
4400 0.805439 0.992118 11078 1.000000 1.000000
4450 0.806450 0.992688 11287 1.000000 1.000000
4500 0.810880 0.993181 11496 1.000000 1.000000
4550 0.812841 0.993674 11705 1.000000 1.000000
4600 0.813789 0.994167 11914 1.000000 1.000000
4650 0.817104 0.994660 12123 1.000000 1.000000
4700 0.821348 0.995153 12332 1.000000 1.000000
4750 0.823234 0.995582 12541 1.000000 1.000000
4800 0.825861 0.995993
4850 0.829420 0.996404
4900 0.832822 0.996815
4950 0.839297 0.997170
5000 0.842057 0.997499
5050 0.845612 0.997827
5100 0.850905 0.998082
5150 0.854108 0.998329
5200 0.857518 0.998575
5250 0.859906 0.998817
5300 0.862068 0.998981
5350 0.863851 0.999145
5400 0.865889 0.999310
5450 0.868748 0.999474
5500 0.875016 0.999637
5550 0.879465 0.999719
5600 0.884537 0.999801
5650 0.891037 0.999883
5700 0.894935 0.999965
5750 0.899050 1.000000
5800 0.906692 1.000000
5850 0.914201 1.000000
5900 0.919515 1.000000
5950 0.925242 1.000000
6000 0.931547 1.000000
6050 0.936965 1.000000
6100 0.943933 1.000000
6150 0.948192 1.000000
6200 0.952154 1.000000
6250 0.959043 1.000000
6300 0.965127 1.000000
6350 0.969322 1.000000
6400 0.971877 1.000000
6450 0.974122 1.000000
6500 0.975494 1.000000
6550 0.977028 1.000000
6600 0.979805 1.000000
6650 0.980725 1.000000
6700 0.982934 1.000000
6750 0.984247 1.000000
6800 0.984938 1.000000
6850 0.986581 1.000000
6900 0.987715 1.000000
6950 0.988011 1.000000
7000 0.988596 1.000000
7050 0.989161 1.000000
7100 0.989237 1.000000
7150 0.989559 1.000000
7200 0.989738 1.000000
7250 0.990027 1.000000
7300 0.990590 1.000000
7350 0.991285 1.000000
7400 0.991809 1.000000
7450 0.992369 1.000000
7500 0.992830 1.000000
7550 0.993457 1.000000
7600 0.993936 1.000000
7650 0.994172 1.000000
7700 0.994531 1.000000
7750 0.994823 1.000000
7800 0.995125 1.000000
7850 0.995492 1.000000
7900 0.995688 1.000000
7950 0.995964 1.000000
8000 0.996158 1.000000
8050 0.996327 1.000000
8100 0.996432 1.000000
8150 0.996633 1.000000
8200 0.996780 1.000000
8250 0.996848 1.000000
8300 0.996981 1.000000
8350 0.997045 1.000000
8400 0.997114 1.000000
8450 0.997242 1.000000
8500 0.997315 1.000000
8550 0.997366 1.000000
8600 0.997487 1.000000
8650 0.997601 1.000000
8700 0.997656 1.000000
8750 0.997775 1.000000
8800 0.997900 1.000000
8850 0.997944 1.000000
8900 0.998108 1.000000
8950 0.998161 1.000000
9000 0.998217 1.000000
9050 0.998389 1.000000
9100 0.998480 1.000000
9150 0.998672 1.000000
9200 0.998779 1.000000
9250 0.998879 1.000000
9300 0.998945 1.000000
9350 0.999020 1.000000
9400 0.999121 1.000000
9450 0.999205 1.000000
9500 0.999285 1.000000
9550 0.999412 1.000000
9600 0.999463 1.000000
9650 0.999499 1.000000
9700 0.999551 1.000000
9750 0.999589 1.000000
9800 0.999625 1.000000
9850 0.999643 1.000000
9900 0.999655 1.000000
9950 0.999689 1.000000
10000 0.999694 1.000000
10050 0.999698 1.000000
10100 0.999827 1.000000
10150 0.999870 1.000000
10200 0.999875 1.000000
10250 0.999875 1.000000
10300 0.999877 1.000000
10350 0.999878 1.000000
10400 0.999880 1.000000
10450 0.999880 1.000000
10500 0.999993 1.000000
10550 0.999993 1.000000
10600 0.999993 1.000000
10650 1.000000 1.000000
10700 1.000000 1.000000
10750 1.000000 1.000000
10800 1.000000 1.000000
10850 1.000000 1.000000
10900 1.000000 1.000000
10950 1.000000 1.000000
11000 1.000000 1.000000
11050 1.000000 1.000000
11100 1.000000 1.000000
11150 1.000000 1.000000
11200 1.000000 1.000000
11250 1.000000 1.000000
11300 1.000000 1.000000
11350 1.000000 1.000000
11400 1.000000 1.000000
11450 1.000000 1.000000
11500 1.000000 1.000000
11550 1.000000 1.000000
11600 1.000000 1.000000
11650 1.000000 1.000000
11700 1.000000 1.000000
11750 1.000000 1.000000
11800 1.000000 1.000000
11850 1.000000 1.000000
11900 1.000000 1.000000
11950 1.000000 1.000000
12000 1.000000 1.000000
12050 1.000000 1.000000
12100 1.000000 1.000000
12150 1.000000 1.000000
12200 1.000000 1.000000
12250 1.000000 1.000000
12300 1.000000 1.000000
12350 1.000000 1.000000
12400 1.000000 1.000000
12450 1.000000 1.000000
12500 1.000000 1.000000
12550 1.000000 1.000000
12600 1.000000 1.000000
12650 1.000000 1.000000
12700 1.000000 1.000000
12750 1.000000 1.000000 12750 1.000000 1.000000
12800 1.000000 1.000000 12959 1.000000 1.000000
12850 1.000000 1.000000 13168 1.000000 1.000000
12900 1.000000 1.000000 13377 1.000000 1.000000
12950 1.000000 1.000000 13586 1.000000 1.000000
13000 1.000000 1.000000 13795 1.000000 1.000000
13050 1.000000 1.000000 14004 1.000000 1.000000
13100 1.000000 1.000000 14213 1.000000 1.000000
13150 1.000000 1.000000 14422 1.000000 1.000000
13200 1.000000 1.000000 14631 1.000000 1.000000
13250 1.000000 1.000000 14840 1.000000 1.000000
13300 1.000000 1.000000 15049 1.000000 1.000000
13350 1.000000 1.000000 15258 1.000000 1.000000
13400 1.000000 1.000000 15467 1.000000 1.000000
13450 1.000000 1.000000 15676 1.000000 1.000000
13500 1.000000 1.000000 15885 1.000000 1.000000
13550 1.000000 1.000000 16094 1.000000 1.000000
13600 1.000000 1.000000 16303 1.000000 1.000000
13650 1.000000 1.000000 16512 1.000000 1.000000
13700 1.000000 1.000000 16721 1.000000 1.000000
13750 1.000000 1.000000 16930 1.000000 1.000000
13800 1.000000 1.000000 17139 1.000000 1.000000
13850 1.000000 1.000000 17348 1.000000 1.000000
13900 1.000000 1.000000 17557 1.000000 1.000000
13950 1.000000 1.000000 17766 1.000000 1.000000
14000 1.000000 1.000000 17975 1.000000 1.000000
14050 1.000000 1.000000 18184 1.000000 1.000000
14100 1.000000 1.000000 18393 1.000000 1.000000
14150 1.000000 1.000000 18602 1.000000 1.000000
14200 1.000000 1.000000 18811 1.000000 1.000000
14250 1.000000 1.000000 19020 1.000000 1.000000
14300 1.000000 1.000000 19229 1.000000 1.000000
14350 1.000000 1.000000 19438 1.000000 1.000000
14400 1.000000 1.000000 19647 1.000000 1.000000
14450 1.000000 1.000000 19856 1.000000 1.000000
14500 1.000000 1.000000 20065 1.000000 1.000000
14550 1.000000 1.000000 20274 1.000000 1.000000
14600 1.000000 1.000000 20483 1.000000 1.000000
14650 1.000000 1.000000 20692 1.000000 1.000000
14700 1.000000 1.000000 20901 1.000000 1.000000
14750 1.000000 1.000000
14800 1.000000 1.000000
14850 1.000000 1.000000
14900 1.000000 1.000000
14950 1.000000 1.000000
15000 1.000000 1.000000
15050 1.000000 1.000000
15100 1.000000 1.000000
15150 1.000000 1.000000
15200 1.000000 1.000000
15250 1.000000 1.000000
15300 1.000000 1.000000
15350 1.000000 1.000000
15400 1.000000 1.000000
15450 1.000000 1.000000
15500 1.000000 1.000000
15550 1.000000 1.000000
15600 1.000000 1.000000
15650 1.000000 1.000000
15700 1.000000 1.000000
15750 1.000000 1.000000
15800 1.000000 1.000000
15850 1.000000 1.000000
15900 1.000000 1.000000
15950 1.000000 1.000000
16000 1.000000 1.000000
16050 1.000000 1.000000
16100 1.000000 1.000000
16150 1.000000 1.000000
16200 1.000000 1.000000
16250 1.000000 1.000000
16300 1.000000 1.000000
16350 1.000000 1.000000
16400 1.000000 1.000000
16450 1.000000 1.000000
16500 1.000000 1.000000
16550 1.000000 1.000000
16600 1.000000 1.000000
16650 1.000000 1.000000
16700 1.000000 1.000000
16750 1.000000 1.000000
16800 1.000000 1.000000
16850 1.000000 1.000000
16900 1.000000 1.000000
16950 1.000000 1.000000
17000 1.000000 1.000000
17050 1.000000 1.000000
17100 1.000000 1.000000
17150 1.000000 1.000000
17200 1.000000 1.000000
17250 1.000000 1.000000
17300 1.000000 1.000000
17350 1.000000 1.000000
17400 1.000000 1.000000
17450 1.000000 1.000000
17500 1.000000 1.000000
17550 1.000000 1.000000
17600 1.000000 1.000000
17650 1.000000 1.000000
17700 1.000000 1.000000
17750 1.000000 1.000000
17800 1.000000 1.000000
17850 1.000000 1.000000
17900 1.000000 1.000000
17950 1.000000 1.000000
18000 1.000000 1.000000
18050 1.000000 1.000000
18100 1.000000 1.000000
18150 1.000000 1.000000
18200 1.000000 1.000000
18250 1.000000 1.000000
18300 1.000000 1.000000
18350 1.000000 1.000000
18400 1.000000 1.000000
18450 1.000000 1.000000
18500 1.000000 1.000000
18550 1.000000 1.000000
18600 1.000000 1.000000
18650 1.000000 1.000000
18700 1.000000 1.000000
18750 1.000000 1.000000
18800 1.000000 1.000000
18850 1.000000 1.000000
18900 1.000000 1.000000
18950 1.000000 1.000000
19000 1.000000 1.000000
19050 1.000000 1.000000
19100 1.000000 1.000000
19150 1.000000 1.000000
19200 1.000000 1.000000
19250 1.000000 1.000000
19300 1.000000 1.000000
19350 1.000000 1.000000
19400 1.000000 1.000000
19450 1.000000 1.000000
19500 1.000000 1.000000
19550 1.000000 1.000000
19600 1.000000 1.000000
19650 1.000000 1.000000
19700 1.000000 1.000000
19750 1.000000 1.000000
19800 1.000000 1.000000
19850 1.000000 1.000000
19900 1.000000 1.000000
19950 1.000000 1.000000
20000 1.000000 1.000000
20050 1.000000 1.000000
20100 1.000000 1.000000
20150 1.000000 1.000000
20200 1.000000 1.000000
20250 1.000000 1.000000
20300 1.000000 1.000000
20350 1.000000 1.000000
20400 1.000000 1.000000
20450 1.000000 1.000000
20500 1.000000 1.000000
20550 1.000000 1.000000
20600 1.000000 1.000000
20650 1.000000 1.000000
20700 1.000000 1.000000
20750 1.000000 1.000000
20800 1.000000 1.000000
20850 1.000000 1.000000
20900 1.000000 1.000000
20950 1.000000 1.000000

View File

@ -1,14 +0,0 @@
const fs = require('fs');
const step = 50;
let input = fs.readFileSync('cdf-full.dat', 'utf-8')
.split('\n')
.map((x) => x.split(' '));
let output = [];
for (let i = 0; i < input.length; i += step) {
output.push(input[i]);
}
fs.writeFileSync('cdf.dat', output.map((x) => x.join(' ')).join('\n'));

View File

@ -0,0 +1,13 @@
<AdaptationSet>
<SupplementalProperty value="156.4909,1.6267,-146.2062,
157.43106,1.5476,-146.5379" />
<BaseURL>b1/</BaseURL>
<Representation>
<BaseURL>repr1/</BaseURL>
<SegmentList>
<SegmentURL media="thumbnail.jpg" />
<SegmentURL media="geometry.png" />
<SegmentURL media="texture.png" />
</SegmentList>
</Representation>
</AdaptationSet>

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,102 @@
x y
2096.775 5.304463744060101
3278.352 16.33223526359845
3765.701 17.82544457063185
4218.115 18.589007065953005
4684.482 19.42118685569443
5110.977 20.260051627523794
5489.205 21.135982097443545
5844.729 21.791159498308467
6029.781 22.388393403115323
6223.579 22.622539924953074
6475.052 22.901617781396723
6636.333 23.051755134306912
6840.258 23.361998325341634
6979.642 23.552028685502886
7178.009 23.792324344850996
7335.255 24.37904714631765
7562.806 24.627126371680227
7783.907 24.830101227775987
8004.982 24.98316925195544
8298.254 25.134506113585452
8537.904 25.253864984545505
8760.497 25.424271800733774
8975.765 25.815704778578432
9132.999 26.05737581292668
9336.317 26.24459093572962
9585.492 26.34288322083019
9834.779 26.56109537386416
10015.356 26.64092477739196
10197.587 26.795018658955616
10382.454 26.852112168640375
10660.685 26.949328264208262
11002.568 27.132409940676443
11212.622 27.39460054169387
11436.797 27.491959345395113
11713.363 27.574627957485113
11935.723 27.769619399694005
12244.282 28.025041014432883
12581.571 28.091760646148813
12858.842 28.315622825578973
13184.942 28.397586054247707
13420.055 28.5539632384609
13659.684 28.735798273742716
13932.029 28.8003790969466
14152.145 28.89289989375855
14446.734 29.176296841593608
14642.384 29.31648529606198
14929.181 29.51497966684016
15239.433 29.593907444726458
15492.758 29.64385069848459
15702.097 29.875349945685944
15990.349 29.923674072288893
16216.101 30.000956362057998
16536.053 30.048765593761654
16835.814 30.179714365314794
16947.621 30.303597674832947
17351.936 30.454985450771478
17698.016 30.51488489310914
17914.157 30.57906837725667
18176.872 30.6333851995108
18478.734 30.686713214685515
18700.801 30.72446873968476
19068.58 30.79875557787023
19274.092 30.825517076526523
19511.412 31.047321936347846
19771.741 31.161969837918278
20000.518 31.244778479662273
20437.107 31.39050365034943
20738.83 31.419166811578165
20984.226 31.481651144575647
21210.303 31.533387458554923
21399.556 31.602704941358184
21699.614 31.630398444224518
21920.074 31.71911304292729
22184.264 31.809957781450375
22450.506 31.91726319695296
22705.485 31.938175973564782
22992.71 32.00032417356417
23187.091 32.06927870559721
23371.526 32.13252361716746
23610.851 32.172553853895955
23829.056 32.27147130631661
24063.348 32.28717183689912
24333.848 32.36429686377921
24624.219 32.38857482526059
24836.26 32.39834096376875
25169.551 32.41610214165156
25397.637 32.42320630537081
25562.038 32.44565520758354
26032.329 32.47660039180723
26306.626 32.50108090494127
26571.944 32.55278150089108
27230.628 32.57779673674716
27880.51 32.58179923455058
28981.995 32.64233379671855
29530.95 32.68646229696469
30414.846 32.70890893132706
32118.437 32.714182817400385
35372.112 32.72226100839287
36963.641 32.727660581775375
38352.216 32.72914284807573
41005.768 32.7434806741804

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,107 @@
x y
2097.299 14.65229700280427
2428.811 16.42331697162227
2741.798 17.615419269452932
2989.542 18.58143558442525
3216.337 19.473848297754373
3533.192 20.52023876523144
3711.406 21.253546002568765
3976.308 22.104274370125776
4172.89 22.740400360316613
4358.214 23.353008897428712
4588.408 24.06017066889605
4760.717 24.62552443244102
4972.379 25.169569630764887
5101.935 25.551587455912113
5210.509 25.93456284201698
5324.409 26.26021800647523
5636.664 26.696952638130615
5866.146 27.097992277995374
6167.952 27.442711626117816
6639.831 27.805255625243447
6918.572 28.09147289425434
7160.043 28.402028193283044
7342.463 28.693288060691298
7557.869 28.963781236247808
7704.073 29.25060867553245
7898.886 29.52757738640797
8046.169 29.758051434778224
8202.773 29.972807749829013
8416.491 30.212201552921872
8574.974 30.394423948452925
8697.311 30.56197357249853
8820.89 30.786888130512335
9009.739 30.988190063862962
9181.465 31.148900356164646
9393.396 31.47028440166912
9607.22 31.71378645100736
9792.055 31.899879073166044
10058.272 32.0222076957666
10422.634 32.186398305281486
10663.359 32.34560351255068
10941.866 32.47742010084354
11249.192 32.673246088508414
11415.359 32.835431347751
11563.274 33.00515732068416
11757.551 33.14822836829327
11924.901 33.33575972093754
12073.172 33.48201894646152
12196.406 33.583449370219434
12368.404 33.663304498599466
12494.029 33.76095350435364
12660.623 33.871991293160754
12826.343 33.9811601594348
12940.443 34.07802913989907
13025.183 34.183953669024646
13179.378 34.31372811498469
13335.766 34.385830597855076
13508.535 34.47375788499503
13728.453 34.565907882347226
13982.265 34.63417565728688
14125.323 34.70753152956884
14373.137 34.7783210627385
14631.342 34.89180521443487
14841.108 34.96270554982211
15038.914 35.02474445749689
15462.525 35.09387694406902
15803.481 35.14404052149408
16057.772 35.18935531941039
16206.026 35.237174616450424
16408.44 35.29326838832231
17052.455 35.36789790546246
17461.244 35.41136536136477
17876.169 35.45175173426117
18711.637 35.49969846835455
18958.605 35.52962616350533
19097.287 35.56427445477692
19266.388 35.60036257766602
19413.593 35.622270888122415
19713.179 35.64788110119483
20038.527 35.6649416847754
20210.44 35.6841288635726
20548.611 35.710449992443
20786.487 35.73076440916822
20979.859 35.74714916310743
21213.496 35.762185494217746
21423.152 35.77690661206711
21677.622 35.789675051389274
22011.401 35.80544068503998
22264.21 35.82704399855524
22638.264 35.84394602614001
22942.439 35.862162822181055
23370.18 35.88039914450786
23702.799 35.89732681794534
24033.236 35.91397558277833
24990.624 35.931153394081804
25534.702 35.95103337805992
26662.913 35.96958514961193
28478.36 35.98673525211481
30084.913 36.02258447410546
30893.914 36.04235311736233
31903.977 36.07236282374023
32591.01 36.088730718453384
33389.82 36.10193204060815
36005.481 36.124420964103564
39003.902 36.13088361508645
40994.559 36.14704615526186
42357.406 36.158301360942424

View File

@ -173,7 +173,7 @@ We denote this combination as \textsf{V-PP}, for Prefetching based on Prediction
\centering \centering
\begin{tikzpicture} \begin{tikzpicture}
\draw [fill=LightCoral] (0,0) rectangle (5,1); \draw [fill=LightCoral] (0,0) rectangle (5,1);
\node at (2.5,0.5) {Furstum / backface culling}; \node at (2.5,0.5) {Frustum / backface culling};
\draw [fill=Khaki] (5,0) rectangle (6.5,1); \draw [fill=Khaki] (5,0) rectangle (6.5,1);
\node at (5.75,0.5) {$B_i$}; \node at (5.75,0.5) {$B_i$};
\draw [fill=SandyBrown] (6.5,0) rectangle (7,1); \draw [fill=SandyBrown] (6.5,0) rectangle (7,1);

View File

@ -0,0 +1,147 @@
\section{Adding bookmarks into DASH NVE framework}\label{sec:bookmarks}
In this section, we explain how to include a new interaction in the system described in Section~\ref{sec:dash3d}.
\subsection{Interaction --- Visual}
We decide to add bookmarks of recommended viewpoints in the 3D scene.
A bookmark is defined by a camera position, orientation, and intrinsic parameters, and offers a particular view of the 3D virtual environment.
As such, it should be represented using a widget that (i) is attached to a particular position, therefore appearing small (respectively big) when it is far (respectively close), and (ii) points at a particular direction, allowing the user to predict what can be seen from this viewpoint.
Bookmarks have been already introduced in the literature, with various appearances \todo[inline]{figure of possible appearances}.
Since, no particular preeminence of one design on the others has been demonstrated in previous work, we arbitrarily choose to use \todo[inline]{type of bookmark} in this work.
Bookmarks can be created either automatically, or manually defined by an expert user (e.g.\ the 3D model designer, or administrator).
Bookmarks could even be derived from the observation of user behavior, by focusing on the most visited areas of the models.
Automated ways of defining bookmarks or adapting them to user behavior is beyond the scope of this paper; methods have been proposed in \todo[inline]{References}
We choose to implement two interactions with bookmarks.
The first, most obvious one, is to position the user camera on the bookmark's viewpoint when the user clicks on the bookmark.
In order to avoid users to lose context, clicking on a bookmark triggers an automatic, smooth, camera displacement that ends up at the bookmark.
% We use Hermite's polynomials to compute this displacement, as proposed in MMSYS16. Lol we don't :'(
We implement an additional interaction that displays a preview of the bookmark's viewpoint while it is hovered by the user's mouse.
A small thumbnail of the viewport is displayed below the bookmark.
\subsection{Segments utility at bookmarked viewpoint}\label{sec:utility}
Introducing bookmarks is a way to make users navigation more predictable.
Indeed, since they are emphasized and, in a way, recommended viewpoints, bookmarks are more likely to be visited by a significant portion of users than any other viewpoint on the scene.
As such, bookmarks can be used as a way to optimize streaming by downloading segments in an optimal, pre-computed order.
More specifically, segment utility as introduced in Section~\ref{sec:dash3d} is only an approximation of the segment's true contribution to the current viewpoint rendering.
When bookmarks are defined, it is possible to obtain a perfect measure of segment utility by performing an offline rendering at each bookmark's viewpoint.
Then, by simply counting the number of pixels that are rendered using each segment, we can rank the segments by order of importance in the rendering.
We define $\mathcal{U}^{*} (s,B_i)$ as being the true utility of a segment $s$ in a viewpoint defined at bookmark $B_i$.
This utility is simply the ratio between the number of pixels displaying that segment on screen, and the total screen area (in pixels).
This utility definition is the same for geometry and texture segments, which allows all segments to be ranked by order of importance, i.e.\ of decreasing utility.
\begin{figure}[th]
\centering
\begin{tikzpicture}
\begin{axis}[
xlabel=Data downloaded (in B),
ylabel=PSNR,
no markers,
cycle list name=mystyle,
width=\tikzwidth,
height=\tikzheight,
legend pos=south east,
xmin=0,
]
\addplot table [x=x, y=y]{assets/system-bookmarks/precomputation/greedy.dat};
\addlegendentry{\scriptsize Default order $\mathcal{U}$}
\addplot table [x=x, y=y]{assets/system-bookmarks/precomputation/precomputed.dat};
\addlegendentry{\scriptsize Proposed order $\mathcal{U}^*$}
\end{axis}
\end{tikzpicture}
\caption{Impact of using the precomputed information of bookmarks to select segments to download\label{fig:precomputation}}
\end{figure}
\begin{figure}[th]
\includegraphics[width=0.49\columnwidth]{assets/system-bookmarks/bookmark/ground-truth.png}
\includegraphics[width=0.49\columnwidth]{assets/system-bookmarks/bookmark/geometry.png}
\caption{A bookmarked viewpoint (left), and a pixel to geometry segment map (right)}\label{fig:bookmarks-utility}
\end{figure}
Figure~\ref{fig:bookmarks-utility} depicts a ``pixel to geometry segment'' map: all pixels of the same color in the right image display an element of the same geometry segment.
We render such maps offline, for each bookmark, and use it to compute the true utility $\mathcal{U}^*(s)$ of segment $s$.
\subsection{MPD modification}
We now present how to introduce bookmarks information in the Media Presentation Description (MPD) file, to be used in a DASH framework.
Bookmarks are fully defined by a viewport description, and the additional content needed to properly render and use a bookmark in a system consists in three images: a thumbnail of the point of view at the bookmark, along with two ``pixel to segment'' maps (see Figure~\ref{fig:bookmarks-utility}, right image).
For this reason, we create a separate adaptation set in the MPD\@.
The bookmarked viewport information is stored as a supplemental property.
Bookmarks adaptation set only contain one representation, composed of three segments corresponding to the three images described earlier.
\begin{figure}[th]
\lstinputlisting[%
language=XML,
caption={MPD description of a geometry adaptation set, and a texture adaptation set.},
label=listing:bookmark-as,
emph={%
MPD,
Period,
AdaptationSet,
Representation,
BaseURL,
SegmentBase,
Initialization,
Role,
SupplementalProperty,
SegmentList,
SegmentURL,
Viewpoint
}
]{assets/system-bookmarks/bookmark-as.xml}
\end{figure}
An example of a bookmark adaptation set is depicted on Listing~\ref{listing:bookmark-as}.
The three first values in the supplemental property are the camera position coordinates, and the three last values are the target point coordinates.
\subsection{System-aware bookmarks}
The information we include in the MPD to optimize streaming at bookmarked viewpoints can also be used to give a sense of the system state to the user.
Indeed, displaying a thumbnail of what can be seen from a bookmark might fool users into thinking that all necessary segments visible from the bookmarked viewpoint have been downloaded.
In case this would be not true, users' Quality of Experience would be unsatisfactory.
In order to give users a sense of the amount of information readily available at a given bookmarked viewpoint, we use the pixel to segment maps described in Section~\ref{sec:utility} to create a mask of segment availability.
Since we know which segments have been downloaded at any given time, we know which pixels in the thumbnail accurately depict what the user will see when clicking on the bookmark.
We thus render the thumbnail with the mask of already downloaded segments superimposed over it.
\todo[inline]{Figure of altered thumbnail}
\subsection{Loader modifications}
We build on the loader introduced in~\cite{forgione2018dash} (Algorithm 1) to implement a client adaptation logic.
We include a bookmark adaptation logic such that (i) when a bookmark is hovered for the first time, the corresponding images (see Listing~\ref{bookmark-as}) are downloaded, and (ii) when a bookmark is clicked, we switch from utility $\mathcal{U}$ to true utility $\mathcal{U}^*$ to determine which segments to download next.
\begin{algorithm}[th]
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\Input{Current index $i$, time $t_i$, viewpoint $v(t_i)$, buffer of already downloaded \texttt{segments} $\mathcal{B}_i$, MPD}
\Output{Next segment $s^{*}_i$ to request, updated buffer $\mathcal{B}_{i+1}$}
\SetAlgoLined%
{- Estimate the bandwidth $\widehat{BW_i}$ and RTT $\widehat{\tau_i}$ \;}
{- Among all \texttt{segments} that are not already downloaded $s \in \mathcal{S} \backslash \mathcal{B}_i$, % \;}
% {-
keep the ones inside the upcoming viewing frustums $\mathcal{FC}=\mathbb{FC}(\widehat{v}(t_i)), t\in [t_i, t_i+\chi]$ thanks to a viewpoint predictor $t_i \rightarrow \hat{v}(t_i)$, a temporal horizon $\chi$ and a frustum culling operator $\mathbb{FC}$ \;}
{- Optimize a criterion $\Omega$ based on $\mathcal{U}$ values and well chosen viewpoint $v(t_i)$ to select the next segment to query }
{\begin{equation*}
s^{*}_i= \argmax{s \in \mathcal{S} \backslash \mathcal{B}_i \cap \mathcal{FC}} \Omega_{\theta_i} \Big(\mathcal{U}(s,v(t_i))\Big) \label{eq1}
\end{equation*} \\
given parameters $\theta_i$ that gathers both online parameters $(i,t_i,v(t_i),\widehat{BW_i}, \widehat{\tau_i}, \mathcal{B}_i)$ and offline metadata;}
{- Update the buffer $\mathcal{B}_{i+1}$ for the next decision: $s^{*}_i$ and lowest \texttt{representations} of $s^{*}_i$ are considered downloaded\;}
{- \Return{segment $s^{*}_i$, buffer $\mathcal{B}_{i+1}$}\;}
{\caption{Algorithm to identify the next segment to query\label{algorithm:nextsegment}}}
\end{algorithm}
\todo[inline]{to be modified to include bookmarks}

View File

@ -1,2 +1,3 @@
\chapter{System bookmarks} \chapter{System bookmarks}
\input{system-bookmarks/bookmark}
\input{system-bookmarks/user-study} \input{system-bookmarks/user-study}