|
@@ -14,6 +14,9 @@ window.addEventListener('load', function() {
|
14
|
14
|
setupDialogPolyfill();
|
15
|
15
|
setupDialog();
|
16
|
16
|
setupReveal();
|
|
17
|
+
|
|
18
|
+ if(location.hash == '#download')
|
|
19
|
+ document.querySelector('#donation-dialog').showModal();
|
17
|
20
|
});
|
18
|
21
|
|
19
|
22
|
function setupDialogPolyfill()
|
|
@@ -182,6 +185,18 @@ body {
|
182
|
185
|
margin: 0.5rem 0 0 0;
|
183
|
186
|
font-size: 1.4rem;
|
184
|
187
|
}
|
|
188
|
+#pay #actions {
|
|
189
|
+ display: flex;
|
|
190
|
+ flex-direction: column;
|
|
191
|
+ line-height: initial;
|
|
192
|
+}
|
|
193
|
+#pay #actions > * {
|
|
194
|
+ margin-top: 0.7rem;
|
|
195
|
+ font-size: 1rem;
|
|
196
|
+}
|
|
197
|
+#pay #actions > :not(.md-button) {
|
|
198
|
+ font-size: 0.8rem;
|
|
199
|
+}
|
185
|
200
|
#pay #amounts {
|
186
|
201
|
display: flex;
|
187
|
202
|
flex-wrap: wrap;
|
|
@@ -252,8 +267,8 @@ input::-webkit-inner-spin-button {
|
252
|
267
|
border-color: salmon !important;
|
253
|
268
|
}
|
254
|
269
|
#custom-amount-wrapper {
|
255
|
|
- /*flex-basis: 14.9rem;*/ /* line break */
|
256
|
|
- flex-basis: 9rem; /* same line */
|
|
270
|
+ flex-basis: 13.8rem; /* line break */
|
|
271
|
+ /*flex-basis: 9rem*/; /* same line */
|
257
|
272
|
visibility: hidden;
|
258
|
273
|
max-height: 0;
|
259
|
274
|
transform: scaleY(0);
|
|
@@ -267,11 +282,14 @@ input::-webkit-inner-spin-button {
|
267
|
282
|
/*top: 0.33em;*/
|
268
|
283
|
top: 0.37em;
|
269
|
284
|
}
|
270
|
|
-/*#custom-tier:checked ~*/ #custom-amount-wrapper {
|
|
285
|
+#custom-tier:checked ~ #custom-amount-wrapper {
|
271
|
286
|
visibility: visible;
|
272
|
287
|
max-height: 64px;
|
273
|
288
|
transform: scaleY(1);
|
274
|
289
|
}
|
|
290
|
+#donation-dialog {
|
|
291
|
+ transform: translate(0, -35%) !important;
|
|
292
|
+}
|
275
|
293
|
|
276
|
294
|
|
277
|
295
|
|
|
@@ -314,11 +332,15 @@ input::-webkit-inner-spin-button {
|
314
|
332
|
margin: 0;
|
315
|
333
|
}
|
316
|
334
|
#topics article ul li {
|
317
|
|
- width: 33.33%;
|
|
335
|
+ min-width: 33.33%;
|
|
336
|
+ max-width: 50%;
|
318
|
337
|
display: flex;
|
319
|
338
|
align-items: center;
|
320
|
339
|
margin: 0;
|
321
|
340
|
}
|
|
341
|
+#topics article ul li img {
|
|
342
|
+ border-radius: 0;
|
|
343
|
+}
|
322
|
344
|
|
323
|
345
|
|
324
|
346
|
|
|
@@ -372,7 +394,7 @@ input::-webkit-inner-spin-button {
|
372
|
394
|
}
|
373
|
395
|
#download article p {
|
374
|
396
|
margin: 1.5rem 0;
|
375
|
|
- font-size: 1.1em;
|
|
397
|
+ font-size: 1.05em;
|
376
|
398
|
}
|
377
|
399
|
#download article footer {
|
378
|
400
|
display: flex;
|
|
@@ -522,7 +544,7 @@ html:has(#donation-dialog[open]) {
|
522
|
544
|
<article class="reveal">
|
523
|
545
|
<div>
|
524
|
546
|
<h1>AR for all devices</h1>
|
525
|
|
- <p>Create Augmented Reality experiences for iOS, Android and even Desktops! All devices are supported, including those without native capabilities for AR / WebXR. That's because encantar.js is built from scratch with computer vision.</p>
|
|
547
|
+ <p>Create Augmented Reality experiences for iOS, Android and even Desktops! All devices are supported, including those without native capabilities for AR / WebXR. User experience is frictionless, with no need to download apps!</p>
|
526
|
548
|
<a href="demos/hello-aframe/poster.html" target="_blank" class="md-button" id="try-demo" data-goatcounter-click>Try a demo</a>
|
527
|
549
|
</div>
|
528
|
550
|
<div>
|
|
@@ -541,19 +563,22 @@ html:has(#donation-dialog[open]) {
|
541
|
563
|
</article>
|
542
|
564
|
<article class="reveal">
|
543
|
565
|
<div>
|
544
|
|
- <h1>Enchanted Images</h1>
|
545
|
|
- <p>Bring images to life! Create enchanted posters, ads, books, murals and more with Image Tracking, also known as Marker Tracking or Natural Feature Tracking. Scan your own images to start the WebAR experience – all in the browser!</p>
|
546
|
|
- <a href="demos/" target="_blank" class="md-button" id="try-more-demos" data-goatcounter-click>Try more demos</a>
|
|
566
|
+ <h1>Open Source AR</h1>
|
|
567
|
+ <p>encantar.js is one of the few open source Augmented Reality frameworks in existence. Your WebAR content is not tied to any platform or service. Host it wherever you want: there is no vendor lock-in and no usage limit.</p>
|
|
568
|
+ <a href="tutorial/" target="_blank" class="md-button" id="read-tutorial" data-goatcounter-click>Get started now</a>
|
547
|
569
|
</div>
|
548
|
570
|
<div>
|
549
|
|
- <img src="img/demo-cat.gif" alt="A cat in Augmented Reality" loading="lazy">
|
|
571
|
+ <ul>
|
|
572
|
+ <li><img src="img/open-source.png" alt="Open Source" loading="lazy" style="margin:1.33rem"></li>
|
|
573
|
+ <li><img src="img/lgpl.png" alt="GNU LGPL" loading="lazy"></li>
|
|
574
|
+ </ul>
|
550
|
575
|
</div>
|
551
|
576
|
</article>
|
552
|
577
|
<article class="reveal">
|
553
|
578
|
<div>
|
554
|
579
|
<h1>Easy to use and to deploy</h1>
|
555
|
|
- <p>encantar.js may be combined with A-Frame, babylon.js, three.js, or any 3D engine – you choose! Also, processing is local, with no backend in the cloud & no recurring fees – just a static web page.</p>
|
556
|
|
- <a href="tutorial/" target="_blank" class="md-button" id="read-tutorial" data-goatcounter-click>Read the tutorial</a>
|
|
580
|
+ <p>encantar.js may be combined with A-Frame, babylon.js, three.js, or any 3D engine – you choose! Also, all processing is performed on the user's device. A static web page is all you need!</p>
|
|
581
|
+ <a href="demos/" target="_blank" class="md-button" id="try-more-demos" data-goatcounter-click>See for yourself</a>
|
557
|
582
|
</div>
|
558
|
583
|
<div>
|
559
|
584
|
<ul>
|
|
@@ -565,14 +590,34 @@ html:has(#donation-dialog[open]) {
|
565
|
590
|
</article>
|
566
|
591
|
<article class="reveal">
|
567
|
592
|
<div>
|
|
593
|
+ <h1>Enchanted Images</h1>
|
|
594
|
+ <p>Bring images to life! Create enchanted posters, ads, books, murals and more with Image Tracking, also known as Marker Tracking or Natural Feature Tracking. Scan your own images to start the WebAR experience – all in the browser!</p>
|
|
595
|
+ <a href="guidelines-for-images/" target="_blank" class="md-button" id="guidelines-for-images" data-goatcounter-click>View the Guidelines</a>
|
|
596
|
+ </div>
|
|
597
|
+ <div>
|
|
598
|
+ <img src="img/demo-cat.gif" alt="A cat in Augmented Reality" loading="lazy">
|
|
599
|
+ </div>
|
|
600
|
+ </article>
|
|
601
|
+ <article class="reveal">
|
|
602
|
+ <div>
|
568
|
603
|
<h1>Add-Ons</h1>
|
569
|
|
- <p>Add-Ons enrich the core of encantar.js with additional and magical features, such as an easy to use Video Player for enchanting posters, murals, business cards and more! User experience is frictionless, with no need to download apps!</p>
|
|
604
|
+ <p>Add-Ons enrich the core of encantar.js with additional features, such as easy to use Buttons for triggering events, as well as a pre-built Video Player for enchanting posters, murals, business cards and more!</p>
|
570
|
605
|
<a href="addons/" target="_blank" class="md-button" id="explore-addons" data-goatcounter-click>Explore the Add-Ons</a>
|
571
|
606
|
</div>
|
572
|
607
|
<div>
|
573
|
608
|
<img src="img/video-player.gif" alt="Video player for web-based Augmented Reality" loading="lazy">
|
574
|
609
|
</div>
|
575
|
610
|
</article>
|
|
611
|
+ <article class="reveal">
|
|
612
|
+ <div>
|
|
613
|
+ <h1>Documentation</h1>
|
|
614
|
+ <p>Extensive documentation accompanies the software. While you can quickly get magic done just by modifying the demos, the API Spellbook provides magical formulae and a comprehensive view of the technical aspects of AR magic.</p>
|
|
615
|
+ <a href="api/" target="_blank" class="md-button" id="open-api-reference" data-goatcounter-click>Explore the API</a>
|
|
616
|
+ </div>
|
|
617
|
+ <div>
|
|
618
|
+ <img src="img/witch-coder.webp" alt="Cartoon" loading="lazy">
|
|
619
|
+ </div>
|
|
620
|
+ </article>
|
576
|
621
|
</section>
|
577
|
622
|
|
578
|
623
|
|
|
@@ -581,6 +626,9 @@ html:has(#donation-dialog[open]) {
|
581
|
626
|
<section id="contact">
|
582
|
627
|
<article class="reveal">
|
583
|
628
|
<h1>Got a question?</h1>
|
|
629
|
+ <p>Usually you can go a long way with the publicly available resources, which include the written materials and the various demos. If for some reason you need one-to-one assistance, consultancy services are available.</p>
|
|
630
|
+ <a href="contact/" target="_blank" id="talk-to-wizard" data-goatcounter-click>Talk to a wizard</a>
|
|
631
|
+<!--
|
584
|
632
|
<div>
|
585
|
633
|
<div>
|
586
|
634
|
<p>Need help with a project?</p>
|
|
@@ -591,6 +639,7 @@ html:has(#donation-dialog[open]) {
|
591
|
639
|
<p><a href="api/" target="_blank" id="study-the-api" data-goatcounter-click>Study the API</a></p>
|
592
|
640
|
</div>
|
593
|
641
|
</div>
|
|
642
|
+-->
|
594
|
643
|
</article>
|
595
|
644
|
</section>
|
596
|
645
|
|
|
@@ -600,7 +649,7 @@ html:has(#donation-dialog[open]) {
|
600
|
649
|
<section id="download">
|
601
|
650
|
<article>
|
602
|
651
|
<h1>Download</h1>
|
603
|
|
- <p>encantar.js is a WebAR framework created independently by <a href="contact/" target="_blank" id="author-name" data-goatcounter-click>Alexandre Martins</a> and released as open source software under the LGPL. Your support is much appreciated!</p>
|
|
652
|
+ <p>encantar.js is created independently by <a href="contact/" target="_blank" id="author-name" data-goatcounter-click>Alexandre Martins</a>. It's based on <a href="https://github.com/alemart/speedy-vision" target="_blank" rel="external" id="speedy-vision" data-goatcounter-click>speedy-vision</a>, an open source computer vision library created by the same author. Your support is much appreciated!</p>
|
604
|
653
|
<footer>
|
605
|
654
|
<button class="md-button md-button--primary" id="download-button" data-goatcounter-click onclick="document.getElementById('donation-dialog').showModal()">Download encantar.js</button>
|
606
|
655
|
<a href="https://github.com/sponsors/alemart" target="_blank" class="md-button" id="download-sponsor" data-goatcounter-click>Sponsor on GitHub</a>
|
|
@@ -620,7 +669,7 @@ html:has(#donation-dialog[open]) {
|
620
|
669
|
|
621
|
670
|
|
622
|
671
|
|
623
|
|
-<dialog id="download-dialog">
|
|
672
|
+<dialog id="download-dialog" class="fixed">
|
624
|
673
|
<form method="dialog">
|
625
|
674
|
<h1>Thank you for your interest in encantar.js</h1>
|
626
|
675
|
<p>Your download will start shortly...</p>
|
|
@@ -632,29 +681,23 @@ html:has(#donation-dialog[open]) {
|
632
|
681
|
|
633
|
682
|
|
634
|
683
|
|
635
|
|
-<dialog id="donation-dialog">
|
|
684
|
+<dialog id="donation-dialog" class="fixed">
|
636
|
685
|
<form id="pay" method="post" action="https://api.encantar.dev/v1/pay" autocomplete="off" onsubmit="return this.tier.value != 'custom' || this['custom-amount'].value != ''">
|
637
|
|
- <h1>Download and donate <span class="heart">💖</span></h1>
|
638
|
|
- <p>Support the project with an amount:</p>
|
|
686
|
+ <h1>Do you appreciate this? <span class="heart">💖</span></h1>
|
|
687
|
+ <p>Support Open Source Augmented Reality!</p>
|
639
|
688
|
<span>
|
640
|
689
|
<div id="amounts" class="euro">
|
641
|
|
- <input type="radio" id="custom-tier" name="tier" value="custom" data-goatcounter-click onchange="this.checked && document.getElementById('custom-amount').focus()">
|
642
|
|
- <!--
|
643
|
|
- <label for="custom-tier"><span class="dollar-sign"></span>X</label>
|
644
|
|
- <input type="radio" id="first-tier" name="tier" value="first" data-goatcounter-click>
|
645
|
|
- <label for="first-tier"><span class="dollar-sign"></span>29</label>
|
646
|
|
- -->
|
647
|
|
- <input type="radio" id="second-tier" name="tier" value="second" checked data-goatcounter-click>
|
648
|
|
- <label for="second-tier"><span class="dollar-sign"></span>49</label>
|
649
|
|
- <input type="radio" id="third-tier" name="tier" value="third" data-goatcounter-click>
|
650
|
|
- <label for="third-tier"><span class="dollar-sign"></span>99</label>
|
651
|
|
- <!--
|
652
|
|
- <input type="radio" id="fourth-tier" name="tier" value="fourth" data-goatcounter-click>
|
653
|
|
- <label for="fourth-tier"><span class="dollar-sign"></span>199</label>
|
654
|
|
- -->
|
|
690
|
+ <input type="radio" id="first-tier" name="tier" value="fifty" data-goatcounter-click>
|
|
691
|
+ <label for="first-tier"><span class="dollar-sign"></span>50</label>
|
|
692
|
+ <input type="radio" id="second-tier" name="tier" value="one-hundred" data-goatcounter-click>
|
|
693
|
+ <label for="second-tier"><span class="dollar-sign"></span>100</label>
|
|
694
|
+ <input type="radio" id="third-tier" name="tier" value="two-hundred" data-goatcounter-click>
|
|
695
|
+ <label for="third-tier"><span class="dollar-sign"></span>200</label>
|
|
696
|
+ <input type="radio" id="custom-tier" name="tier" value="custom" data-goatcounter-click required onchange="this.checked && document.getElementById('custom-amount').focus()">
|
|
697
|
+ <label for="custom-tier">Other</label>
|
655
|
698
|
<label for="custom-amount" id="custom-amount-wrapper">
|
656
|
699
|
<span class="dollar-sign"></span>
|
657
|
|
- <input type="number" id="custom-amount" name="custom-amount" value="" placeholder="Enter the amount" min="0" max="999999" step="1" oninput="document.getElementById('custom-tier').click()">
|
|
700
|
+ <input type="number" id="custom-amount" name="custom-amount" value="" placeholder="Enter an amount" min="0" max="999999" step="1" oninput="document.getElementById('custom-tier').click()">
|
658
|
701
|
</label>
|
659
|
702
|
</div>
|
660
|
703
|
<div id="currencies">
|
|
@@ -664,9 +707,12 @@ html:has(#donation-dialog[open]) {
|
664
|
707
|
<label for="currency-eur">🇪🇺 EUR</label>
|
665
|
708
|
</div>
|
666
|
709
|
</span>
|
667
|
|
- <input type="submit" value="Download" class="md-button md-button--primary" id="get-encantar" data-goatcounter-click>
|
|
710
|
+ <div id="actions">
|
|
711
|
+ <button type="submit" class="md-button md-button--primary" id="donate-stripe" data-goatcounter-click>Donate & Download</button>
|
|
712
|
+ <a href="https://www.paypal.com/donate/?hosted_button_id=3H4CAJ9832GCJ" rel="external" class="md-button md-button-primary" id="donate-paypal" data-goatcounter-click>Donate via PayPal</a>
|
|
713
|
+ </div>
|
668
|
714
|
</form>
|
669
|
|
- <button id="donation-dialog-close" onclick="document.getElementById('donation-dialog').close()">×</button>
|
|
715
|
+ <button id="donation-dialog-close" onclick="this.parentNode.close()">×</button>
|
670
|
716
|
</dialog>
|
671
|
717
|
{% endblock %}
|
672
|
718
|
|