Remove Blender Cloud specific pages
They are now available in the blender-cloud repository. This is an effort to make Pillar a generic package.
This commit is contained in:
parent
7f336cb47c
commit
5ec76f8801
@ -1,16 +1,12 @@
|
||||
import itertools
|
||||
import logging
|
||||
|
||||
from pillarsdk import Node
|
||||
from pillarsdk import Project
|
||||
from pillarsdk.exceptions import ResourceNotFound
|
||||
from flask import abort
|
||||
from flask import Blueprint
|
||||
from flask import current_app
|
||||
from flask import render_template
|
||||
from flask import redirect
|
||||
from flask import request
|
||||
from flask_login import current_user
|
||||
from werkzeug.contrib.atom import AtomFeed
|
||||
|
||||
from pillar.web.utils import system_util
|
||||
@ -19,7 +15,6 @@ from pillar.web.nodes.custom.posts import posts_view
|
||||
from pillar.web.nodes.custom.posts import posts_create
|
||||
from pillar.web.utils import attach_project_pictures
|
||||
from pillar.web.utils import current_user_is_authenticated
|
||||
from pillar.web.utils import get_file
|
||||
|
||||
blueprint = Blueprint('main', __name__)
|
||||
log = logging.getLogger(__name__)
|
||||
@ -27,80 +22,7 @@ log = logging.getLogger(__name__)
|
||||
|
||||
@blueprint.route('/')
|
||||
def homepage():
|
||||
# Workaround to cache rendering of a page if user not logged in
|
||||
@current_app.cache.cached(timeout=3600)
|
||||
def render_page():
|
||||
return render_template('join.html')
|
||||
|
||||
if current_user.is_anonymous:
|
||||
return render_page()
|
||||
|
||||
# Get latest blog posts
|
||||
api = system_util.pillar_api()
|
||||
latest_posts = Node.all({
|
||||
'projection': {'name': 1, 'project': 1, 'node_type': 1,
|
||||
'picture': 1, 'properties.status': 1, 'properties.url': 1},
|
||||
'where': {'node_type': 'post', 'properties.status': 'published'},
|
||||
'embedded': {'project': 1},
|
||||
'sort': '-_created',
|
||||
'max_results': '5'
|
||||
}, api=api)
|
||||
|
||||
# Append picture Files to last_posts
|
||||
for post in latest_posts._items:
|
||||
post.picture = get_file(post.picture, api=api)
|
||||
|
||||
# Get latest assets added to any project
|
||||
latest_assets = Node.latest('assets', api=api)
|
||||
|
||||
# Append picture Files to latest_assets
|
||||
for asset in latest_assets._items:
|
||||
asset.picture = get_file(asset.picture, api=api)
|
||||
|
||||
# Get latest comments to any node
|
||||
latest_comments = Node.latest('comments', api=api)
|
||||
|
||||
# Get a list of random featured assets
|
||||
random_featured = get_random_featured_nodes()
|
||||
|
||||
# Parse results for replies
|
||||
to_remove = []
|
||||
for idx, comment in enumerate(latest_comments._items):
|
||||
if comment.properties.is_reply:
|
||||
try:
|
||||
comment.attached_to = Node.find(comment.parent.parent,
|
||||
{'projection': {
|
||||
'_id': 1,
|
||||
'name': 1,
|
||||
}},
|
||||
api=api)
|
||||
except ResourceNotFound:
|
||||
# Remove this comment
|
||||
to_remove.append(idx)
|
||||
else:
|
||||
comment.attached_to = comment.parent
|
||||
|
||||
for idx in reversed(to_remove):
|
||||
del latest_comments._items[idx]
|
||||
|
||||
main_project = Project.find(current_app.config['MAIN_PROJECT_ID'], api=api)
|
||||
main_project.picture_header = get_file(main_project.picture_header, api=api)
|
||||
|
||||
# Merge latest assets and comments into one activity stream.
|
||||
def sort_key(item):
|
||||
return item._created
|
||||
|
||||
activities = itertools.chain(latest_assets._items,
|
||||
latest_comments._items)
|
||||
activity_stream = sorted(activities, key=sort_key, reverse=True)
|
||||
|
||||
return render_template(
|
||||
'homepage.html',
|
||||
main_project=main_project,
|
||||
latest_posts=latest_posts._items,
|
||||
activity_stream=activity_stream,
|
||||
random_featured=random_featured,
|
||||
api=api)
|
||||
return render_template('homepage.html')
|
||||
|
||||
|
||||
# @blueprint.errorhandler(500)
|
||||
@ -118,17 +40,6 @@ def homepage():
|
||||
# return render_template('errors/403_embed.html'), 403
|
||||
#
|
||||
|
||||
@blueprint.route('/join')
|
||||
def join():
|
||||
"""Join page"""
|
||||
return redirect('https://store.blender.org/product/membership/')
|
||||
|
||||
|
||||
@blueprint.route('/services')
|
||||
def services():
|
||||
"""Services page"""
|
||||
return render_template('services.html')
|
||||
|
||||
|
||||
@blueprint.route('/blog/')
|
||||
@blueprint.route('/blog/<url>')
|
||||
@ -167,37 +78,6 @@ def get_projects(category):
|
||||
return projects
|
||||
|
||||
|
||||
def get_random_featured_nodes():
|
||||
|
||||
import random
|
||||
|
||||
api = system_util.pillar_api()
|
||||
projects = Project.all({
|
||||
'projection': {'nodes_featured': 1},
|
||||
'where': {'is_private': False},
|
||||
'max_results': '15'
|
||||
}, api=api)
|
||||
|
||||
featured_nodes = (p.nodes_featured for p in projects._items if p.nodes_featured)
|
||||
featured_nodes = [item for sublist in featured_nodes for item in sublist]
|
||||
if len(featured_nodes) > 3:
|
||||
featured_nodes = random.sample(featured_nodes, 3)
|
||||
|
||||
featured_node_documents = []
|
||||
|
||||
for node in featured_nodes:
|
||||
node_document = Node.find(node, {
|
||||
'projection': {'name': 1, 'project': 1, 'picture': 1,
|
||||
'properties.content_type': 1, 'properties.url': 1},
|
||||
'embedded': {'project': 1}
|
||||
}, api=api)
|
||||
|
||||
node_document.picture = get_file(node_document.picture, api=api)
|
||||
featured_node_documents.append(node_document)
|
||||
|
||||
return featured_node_documents
|
||||
|
||||
|
||||
@blueprint.route('/open-projects')
|
||||
def open_projects():
|
||||
@current_app.cache.cached(timeout=3600, unless=current_user_is_authenticated)
|
||||
|
@ -1,361 +1,8 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% from '_macros/_navigation.html' import navigation_tabs %}
|
||||
|
||||
| {% set title = 'homepage' %}
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:type", content="website")
|
||||
meta(property="og:url", content="https://cloud.blender.org/")
|
||||
|
||||
meta(property="og:title", content="Blender Cloud")
|
||||
meta(name="twitter:title", content="Blender Cloud")
|
||||
|
||||
meta(property="og:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(name="twitter:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
|
||||
meta(property="og:image", content="{% if main_project.picture_header %}{{ main_project.picture_header.thumbnail('l', api=api) }}{% else %}{{ url_for('static', filename='assets/img/backgrounds/background_caminandes_3_02.jpg')}}{% endif %}")
|
||||
meta(name="twitter:image", content="{% if main_project.picture_header %}{{ main_project.picture_header.thumbnail('l', api=api) }}{% else %}{{ url_for('static', filename='assets/img/backgrounds/background_caminandes_3_02.jpg')}}{% endif %}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block body %}
|
||||
.dashboard-container
|
||||
section#main
|
||||
| {{ navigation_tabs(title) }}
|
||||
|
||||
section#stream
|
||||
|
||||
h3#activity-stream__title
|
||||
| Activity Stream
|
||||
|
||||
ul#activity-stream__filters
|
||||
li Filter
|
||||
li.filter.active(
|
||||
data-filter='image',
|
||||
title="List images")
|
||||
i.pi-picture
|
||||
li.filter.active(
|
||||
data-filter='video',
|
||||
title="List videos")
|
||||
i.pi-film-thick
|
||||
li.filter.active(
|
||||
data-filter='file',
|
||||
title="List files")
|
||||
i.pi-file-archive
|
||||
li.filter(
|
||||
data-filter='comment',
|
||||
title="List comments")
|
||||
i.pi-comment
|
||||
|
||||
ul#activity-stream__list
|
||||
| {% for n in activity_stream %}
|
||||
li.activity-stream__list-item(
|
||||
class="{{ n.node_type }} {{ n.properties.content_type }} {% if n.picture %}with-picture{% endif %}",
|
||||
data-url="{{ url_for_node(node=n) }}")
|
||||
a.activity-stream__list-thumbnail(
|
||||
class="{{ n.properties.content_type }}",
|
||||
href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.picture %}
|
||||
img(src="{{ n.picture.thumbnail('m', api=api) }}")
|
||||
| {% endif %}
|
||||
|
||||
.activity-stream__list-thumbnail-icon
|
||||
| {% if n.node_type == 'asset' %}
|
||||
| {% if n.properties.content_type == 'video' %}
|
||||
i.pi-play
|
||||
| {% elif n.properties.content_type == 'image' %}
|
||||
i.pi-picture
|
||||
| {% elif n.properties.content_type == 'file' %}
|
||||
i.pi-file-archive
|
||||
| {% else %}
|
||||
i.pi-folder
|
||||
| {% endif %}
|
||||
| {% elif n.node_type == 'comment' %}
|
||||
i.pi-comment
|
||||
| {% endif %}
|
||||
|
||||
|
||||
.activity-stream__list-details
|
||||
a.title(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.node_type == 'comment' %}
|
||||
| {{ n.properties.content | striptags | truncate(200) }}
|
||||
| {% else %}
|
||||
| {{ n.name }}
|
||||
| {% endif %}
|
||||
| {% if n.permissions.world %}
|
||||
.ribbon
|
||||
span free
|
||||
| {% endif %}
|
||||
ul.meta
|
||||
| {% if n.node_type == 'comment' or not n.picture %}
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}", title="{{ n._created }}") {{ n._created | pretty_date_time }}
|
||||
li.who {{ n.user.full_name }}
|
||||
| {% endif %}
|
||||
|
||||
| {% if n.attached_to %}
|
||||
li.where-parent
|
||||
a(href="{{ url_for_node(node_id=n.attached_to._id) }}") {{ n.attached_to.name }}
|
||||
| {% endif %}
|
||||
li.where-project
|
||||
a.project(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
li.what
|
||||
| {% if n.node_type == 'asset' %}
|
||||
| {{ n.properties.content_type | undertitle }}
|
||||
| {% elif n.node_type != 'comment' %}
|
||||
| {{ n.node_type | undertitle }}
|
||||
| {% endif %}
|
||||
|
||||
| {% if n.picture %}
|
||||
ul.meta.extra
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}", title="{{ n._created }}") {{ n._created | pretty_date_time }}
|
||||
li.who {{ n.user.full_name }}
|
||||
| {% endif %}
|
||||
| {% endfor %}
|
||||
|
||||
li.activity-stream__list-item.empty#activity-stream__empty
|
||||
| No items to list.
|
||||
|
||||
|
||||
section#side
|
||||
section.announcement.hidden
|
||||
| {% if main_project.picture_header %}
|
||||
a(href="https://cloud.blender.org/p/agent-327/")
|
||||
img.header(
|
||||
src="{{ main_project.picture_header.thumbnail('l', api=api) }}")
|
||||
| {% endif %}
|
||||
.text
|
||||
.title
|
||||
a(href="https://cloud.blender.org/p/agent-327/")
|
||||
span In production:
|
||||
strong Agent 327
|
||||
|
||||
.lead
|
||||
span.
|
||||
Follow the ongoing progress of the Barbershop fight scene, a character study for the Agent 327 project.
|
||||
|
||||
.buttons
|
||||
a.btn.btn-default.btn-outline.orange(
|
||||
href="https://cloud.blender.org/p/agent-327/blog/")
|
||||
| Blog
|
||||
a.btn.btn-default.btn-outline.blue(
|
||||
href="https://cloud.blender.org/p/agent-327/")
|
||||
| Learn More
|
||||
|
||||
section#blog-stream
|
||||
a.feed(
|
||||
href="{{ url_for('main.feeds_blogs') }}",
|
||||
title="Blender Cloud & Projects Blog Feed",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-rss
|
||||
|
||||
h3
|
||||
a(href="{{ url_for('main.main_blog') }}") Blog
|
||||
|
||||
ul#blog-stream__list
|
||||
| {% if latest_posts %}
|
||||
| {% for n in latest_posts %}
|
||||
| {% if n.picture and loop.first %}
|
||||
li.blog-stream__list-item.featured
|
||||
a.blog-stream__thumbnail(
|
||||
href="{{ url_for_node(node=n) }}")
|
||||
img(src="{{ n.picture.thumbnail('l', api=api) }}")
|
||||
a.title(href="{{ url_for_node(node=n) }}")
|
||||
| {{ n.name }}
|
||||
|
||||
ul.meta
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}",
|
||||
title="Updated {{ n._updated | pretty_date }}")
|
||||
| {{ n._created | pretty_date }}
|
||||
li.where-project
|
||||
a.project(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
| {% else %}
|
||||
li.blog-stream__list-item
|
||||
a.blog-stream__list-thumbnail(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.picture %}
|
||||
img.image(src="{{ n.picture.thumbnail('s', api=api) }}")
|
||||
| {% else %}
|
||||
i.pi-newspaper
|
||||
| {% endif %}
|
||||
.blog-stream__list-details
|
||||
a.title(href="{{ url_for_node(node=n) }}") {{ n.name }}
|
||||
ul.meta
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}",
|
||||
title="Updated {{ n._updated | pretty_date }}")
|
||||
| {{ n._created | pretty_date }}
|
||||
li.where-project
|
||||
a.project(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
| {% endif %}
|
||||
| {% endfor %}
|
||||
| {% else %}
|
||||
li.blog-stream__list-item
|
||||
.blog-stream__list-details
|
||||
ul.meta
|
||||
li.when No updates yet
|
||||
| {% endif %}
|
||||
li.blog-stream__list-item.more
|
||||
a(href="{{ url_for('main.main_blog') }}") See All Blog Posts
|
||||
|
||||
|
||||
section#random-asset
|
||||
h3
|
||||
a(href="/search") Explore the Cloud
|
||||
span.section-lead Random selection of the best assets & tutorials
|
||||
|
||||
ul.random-asset__list
|
||||
| {% for n in random_featured %}
|
||||
| {% if n.picture and loop.first %}
|
||||
li.random-asset__list-item.featured
|
||||
| {% if n.permissions.world %}
|
||||
.ribbon
|
||||
span free
|
||||
| {% endif %}
|
||||
a.random-asset__thumbnail(
|
||||
href="{{ url_for_node(node=n) }}",
|
||||
class="{{ n.properties.content_type }}")
|
||||
| {% if n.picture %}
|
||||
img(src="{{ n.picture.thumbnail('l', api=api) }}")
|
||||
|
||||
| {% if n.properties.content_type == 'video' %}
|
||||
i.pi-play
|
||||
| {% endif %}
|
||||
|
||||
| {% endif %}
|
||||
|
||||
a.title(href="{{ url_for_node(node=n) }}")
|
||||
| {{ n.name }}
|
||||
ul.meta
|
||||
li.what
|
||||
a(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.properties.content_type %}{{ n.properties.content_type }}{% else %}Folder{% endif %}
|
||||
li.where
|
||||
a(href="{{ url_for('projects.view', project_url=n.project.url) }}")
|
||||
| {{ n.project.name }}
|
||||
| {% else %}
|
||||
|
||||
li.random-asset__list-item
|
||||
| {% if n.permissions.world %}
|
||||
.ribbon
|
||||
span free
|
||||
| {% endif %}
|
||||
a.random-asset__list-thumbnail(
|
||||
href="{{ url_for_node(node=n) }}",
|
||||
class="{{ n.properties.content_type }}")
|
||||
| {% if n.picture %}
|
||||
img.image(src="{{ n.picture.thumbnail('s', api=api) }}")
|
||||
| {% else %}
|
||||
| {% if n.properties.content_type == 'video' %}
|
||||
i.pi-film-thick
|
||||
| {% elif n.properties.content_type == 'image' %}
|
||||
i.pi-picture
|
||||
| {% elif n.properties.content_type == 'file' %}
|
||||
i.pi-file-archive
|
||||
| {% else %}
|
||||
i.pi-folder
|
||||
| {% endif %}
|
||||
| {% endif %}
|
||||
.random-asset__list-details
|
||||
a.title(href="{{ url_for_node(node=n) }}") {{ n.name }}
|
||||
ul.meta
|
||||
li.what
|
||||
a(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.properties.content_type %}{{ n.properties.content_type }}{% else %}Folder{% endif %}
|
||||
li.where
|
||||
a(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
|
||||
| {% endif %}
|
||||
| {% endfor %}
|
||||
|
||||
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script.
|
||||
$(function () {
|
||||
|
||||
/* cleanup mentions in comments */
|
||||
$('.activity-stream__list-details a.title').each(function(){
|
||||
$(this).text($(this).text().replace(/\*|\@|\<(.*?)\>/g, ''));
|
||||
});
|
||||
|
||||
function saveFilters(){
|
||||
var filtersEnabled = [];
|
||||
|
||||
$('ul#activity-stream__filters li.filter.active').each(function(){
|
||||
filtersEnabled.push($(this).attr('data-filter'));
|
||||
});
|
||||
|
||||
setJSONCookie('bcloud_ui', 'homepage_activity_filters', filtersEnabled);
|
||||
}
|
||||
|
||||
function loadFilters(){
|
||||
|
||||
var filters = Cookies.getJSON('bcloud_ui');
|
||||
|
||||
if (filters) {
|
||||
if (filters.homepage_activity_filters && filters.homepage_activity_filters.length){
|
||||
/* Clear style on filters/items */
|
||||
$('ul#activity-stream__filters li.filter').removeClass('active');
|
||||
$('ul#activity-stream__list li.activity-stream__list-item').addClass('hidden');
|
||||
|
||||
for (var f in filters.homepage_activity_filters){
|
||||
|
||||
var savedFilter = filters.homepage_activity_filters[f];
|
||||
|
||||
/* Style each filter type */
|
||||
$('ul#activity-stream__filters li.filter').each(function(){
|
||||
if ($(this).attr('data-filter') == savedFilter){
|
||||
$(this).addClass('active');
|
||||
}
|
||||
});
|
||||
|
||||
/* Show items that are on the cookie */
|
||||
$('ul#activity-stream__list li.activity-stream__list-item').each(function(){
|
||||
if ($(this).hasClass(savedFilter)) {
|
||||
$(this).removeClass('hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Toggle filters */
|
||||
$('ul#activity-stream__filters li.filter').click(function(){
|
||||
|
||||
// Style the filter button
|
||||
$(this).toggleClass('active');
|
||||
|
||||
var filterType = $(this).attr('data-filter');
|
||||
|
||||
saveFilters();
|
||||
|
||||
// Toggle hidden class on list item if it has class matching the filter
|
||||
$('ul#activity-stream__list li.activity-stream__list-item').each(function(){
|
||||
if ($(this).hasClass(filterType)) {
|
||||
$(this).toggleClass('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
var hiddenItems = $('ul#activity-stream__list li.activity-stream__list-item.hidden').length;
|
||||
|
||||
if (hiddenItems == '{{ activity_stream|length }}'){
|
||||
$('#activity-stream__empty').show();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
loadFilters();
|
||||
|
||||
/* Click on the whole asset/comment row to go */
|
||||
$('li.activity-stream__list-item.asset, li.activity-stream__list-item.comment').click(function(e){
|
||||
window.location.href = $(this).data('url');
|
||||
$(this).addClass('active');
|
||||
});
|
||||
|
||||
hopToTop(); // Display jump to top button
|
||||
});
|
||||
| {% endblock %}
|
||||
h1 Welcome to Pillar!
|
||||
p Get started on pillarframework.org
|
||||
| {% endblock body %}
|
||||
|
@ -1,674 +0,0 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% block page_title %}Welcome{% endblock %}
|
||||
|
||||
| {% set title = 'join' %}
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:title", content="Join the Blender Cloud")
|
||||
meta(property="og:url", content="https://cloud.blender.org/")
|
||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_andy_hdribot_01.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block header_backdrop %}
|
||||
.navbar-backdrop.join(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/background_agent327_04.jpg')}})")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block page_overlay %}
|
||||
#page-overlay.video
|
||||
.video-embed
|
||||
| {% endblock %}
|
||||
|
||||
| {% block body %}
|
||||
#page-container.join
|
||||
#page-header
|
||||
.container
|
||||
.page-title
|
||||
span.text-background Welcome to the Blender Cloud.
|
||||
|
||||
.page-title-summary
|
||||
p
|
||||
span.text-background Join us as we make the Agent 327 "Barbershop" scene
|
||||
ul
|
||||
li
|
||||
span.text-background Exclusive production insight & walk-throughs
|
||||
li
|
||||
span.text-background High-quality assets ready to use
|
||||
li
|
||||
span.text-background All the open movies files & tutorials
|
||||
li
|
||||
span.text-background 100+ hours of training
|
||||
|
||||
.page-header-cta-container
|
||||
a.page-header-cta(href="https://store.blender.org/product/membership/")
|
||||
| Join Now
|
||||
|
||||
a.page-header-cta-extra(href="https://cloud.blender.org/p/agent-327")
|
||||
| Learn More
|
||||
i.pi-angle-right
|
||||
|
||||
|
||||
#page-content
|
||||
section.page-card-header
|
||||
h2
|
||||
a(href="{{ url_for('main.training') }}") Training & Tutorials
|
||||
|
||||
.page-triplet-container.homepage
|
||||
.row
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/motion-graphics/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="HDRI",
|
||||
src="{{ url_for('static', filename='assets/img/features/training_motion_graphics.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Motion Graphics
|
||||
p.
|
||||
A comprehensive guide to motion graphics techniques using Blender.
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/motion-graphics/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/toon-character-workflow/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Textures",
|
||||
src="{{ url_for('static', filename='assets/img/features/training_toon_character.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Toon Character Workflow
|
||||
p.
|
||||
Perfect for beginners, learn how to build a cartoon character from concept to finish.
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/toon-character-workflow/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/gallery")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Characters",
|
||||
src="{{ url_for('static', filename='assets/img/features/training_bob_forest.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Art Walk-throughs
|
||||
p.
|
||||
Follow artists through the creative process and techniques behind their work.
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/gallery")
|
||||
| LEARN MORE
|
||||
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
p.extra.
|
||||
Other trainings:
|
||||
<a href="https://cloud.blender.org/p/3d-printing/">Blender for 3D Printing</a>,
|
||||
<a href="https://cloud.blender.org/p/game-asset-creation/">Game Asset Creation</a>,
|
||||
<a href="https://cloud.blender.org/p/blenderella/">Character Modeling</a>,
|
||||
<a href="https://cloud.blender.org/p/character-animation/">Character Animation</a>,
|
||||
<a href="https://cloud.blender.org/p/humane-rigging/">Introduction</a>
|
||||
and
|
||||
<a href="https://cloud.blender.org/p/blenrig/">Advanced Rigging</a>,
|
||||
<a href="https://cloud.blender.org/p/track-match-2/">VFX Workflow</a>,
|
||||
<a href="https://cloud.blender.org/p/creature-factory-2/">Creature</a>
|
||||
and
|
||||
<a href="https://cloud.blender.org/p/venoms-lab-2/">Cartoon Character creation</a>,
|
||||
<a href="https://cloud.blender.org/p/chaos-evolution/">Advanced</a>
|
||||
<a href="https://cloud.blender.org/p/blend-and-paint/">Digital Painting</a>
|
||||
and
|
||||
<a href="{{ url_for('main.training') }}">much more</a>!
|
||||
|
||||
|
||||
.page-triplet-container-fluid.dark(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
||||
section.page-card-header
|
||||
h2
|
||||
a(href="{{ url_for('main.open_projects') }}") Browse all the Open Movies
|
||||
|
||||
.page-triplet-container.homepage
|
||||
.row
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/cosmos-laundromat/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="HDRI",
|
||||
src="{{ url_for('static', filename='assets/img/features/open_movies_cosmos.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Cosmos Laundromat
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/cosmos-laundromat/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/agent-327/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Textures",
|
||||
src="{{ url_for('static', filename='assets/img/features/open_movies_agent_barbershop.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Agent 327
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/agent-327/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/caminandes-3/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Characters",
|
||||
src="{{ url_for('static', filename='assets/img/features/open_movies_caminandes_llamigos.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Caminandes
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/caminandes-3/")
|
||||
| LEARN MORE
|
||||
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
p.extra.
|
||||
Other open movies:
|
||||
<a href="https://cloud.blender.org/p/elephants-dream/">Elephants Dream</a>,
|
||||
<a href="https://cloud.blender.org/p/sintel/">Sintel</a>,
|
||||
<a href="https://cloud.blender.org/p/big-buck-bunny/">Big Buck Bunny</a>,
|
||||
<a href="https://cloud.blender.org/p/tears-of-steel/">Tears of Steel</a>,
|
||||
<a href="https://cloud.blender.org/p/glass-half/">Glass Half</a>,
|
||||
and
|
||||
<a href="{{ url_for('main.open_projects') }}">more</a>.
|
||||
|
||||
|
||||
section.page-card-header
|
||||
h2 Download 1000s of files and assets
|
||||
|
||||
.page-triplet-container.homepage
|
||||
.row
|
||||
.col-md-4
|
||||
.triplet-card(data-url="{{ url_for('projects.view', project_url='textures') }}")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Textures",
|
||||
src="{{ url_for('static', filename='assets/img/features/textures_01.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Textures
|
||||
p.
|
||||
More than 1500 texture maps.
|
||||
Browse online or from Blender with our awesome add-on.
|
||||
a.triplet-cta(href="{{ url_for('projects.view', project_url='textures') }}")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="{{ url_for('projects.view', project_url='hdri') }}")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="HDRI",
|
||||
src="{{ url_for('static', filename='assets/img/features/hdri_01.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 HDRI
|
||||
p.
|
||||
Up to 16K and 24 EVs (extremely high) HDR images to light your renders.
|
||||
a.triplet-cta(href="{{ url_for('projects.view', project_url='hdri') }}")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="{{ url_for('projects.view', project_url='characters') }}")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Characters",
|
||||
src="{{ url_for('static', filename='assets/img/features/characters_01.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Characters
|
||||
p.
|
||||
Production quality, fully rigged and shaded characters ready to animate.
|
||||
a.triplet-cta(href="{{ url_for('projects.view', project_url='characters') }}")
|
||||
| LEARN MORE
|
||||
|
||||
|
||||
section.page-card-header
|
||||
h2 Learn by Example
|
||||
|
||||
|
||||
section.page-card.services-projects
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Exclusive Production Insights
|
||||
.page-card-summary
|
||||
p.
|
||||
Watch the original authors of shots breaking them down and share their
|
||||
insight in the production process. Watch animation reviews,
|
||||
narrated timelapses, shot walk-throughs and more.
|
||||
|
||||
.page-card-side
|
||||
.page-card-image
|
||||
video(autoplay, loop)
|
||||
source(src="{{ url_for('static', filename='assets/img/features/animation_review_01.mp4')}}")
|
||||
|
||||
|
||||
section.page-card.right.services-projects
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Production Quality Files
|
||||
.page-card-summary
|
||||
p.
|
||||
From fully rigged characters ready to animate to an Art Gallery
|
||||
curated by the best Blender artists, access top quality blendfiles to learn
|
||||
new techniques and improve your art.
|
||||
|
||||
.page-card-side
|
||||
.page-card-image
|
||||
img(
|
||||
alt="High Quality Assets",
|
||||
src="{{ url_for('static', filename='assets/img/features/locomotive_01.jpg')}}")
|
||||
|
||||
|
||||
#blender-addon.page-section-container(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_bw_01.jpg')}})")
|
||||
section.page-card-header.dark Blender Cloud Add-on
|
||||
span.page-card-header_lead.dark Connect Blender with the Cloud
|
||||
|
||||
a.page-card-cta.download(
|
||||
href="https://cloud.blender.org/r/downloads/blender_cloud-latest-bundle.zip")
|
||||
i.pi-download
|
||||
| Download <small>v</small>{{ config.BLENDER_CLOUD_ADDON_VERSION }}
|
||||
|
||||
section.page-card.dark.right
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Blender Sync
|
||||
.page-card-summary.
|
||||
Save your settings once. Use them anywhere.
|
||||
Carry your Blender configuration with you,
|
||||
use our free add-on to sync your keymaps and preferences.
|
||||
<hr/>
|
||||
<small>Syncing settings is free for everyone! No subscription required.</small>
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-blender-sync")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns="http://www.w3.org/2000/svg",
|
||||
width="64", height="54", viewBox="0 0 64 54")
|
||||
g(fill="none", stroke="#aaa", stroke-width="2", stroke-miterlimit="10")
|
||||
path(d="M29 47H5l-4-4v-2h24l2 2h2M29 3H10C8.344 3 7 4.343 7 6v32M35 51h24l4-4v-2H39l-2 2h-2M35 7h19c1.656 0 3 1.343 3 3v32M32 34v20M32 20v8M32 0v14")
|
||||
g
|
||||
path(d="M32 31c-3.866 0-7-3.134-7-7M32 17c3.866 0 7 3.134 7 7M32 31h8M24 17h8M36 35l4-4-4-4M28 21l-4-4 4-4")
|
||||
path(d="M29 37H11V7h18M35 11h18v30H35")
|
||||
|
||||
|
||||
section.page-card.dark
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Texture Browser
|
||||
.page-card-summary
|
||||
p.
|
||||
Access the <a href="https://cloud.blender.org/p/textures/">Blender Cloud Textures and HDRI</a>
|
||||
libraries from within Blender.
|
||||
Create, manage and share <em>your own</em> texture libraries!
|
||||
|
||||
a.page-card-cta.watch-video(
|
||||
href="https://www.youtube.com/watch?v=-srXYv2Osjw",
|
||||
data-youtube-id="-srXYv2Osjw")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns="http://www.w3.org/2000/svg",
|
||||
width="64", height="60",
|
||||
viewBox="0 0 64 60")
|
||||
g(fill="#aaa")
|
||||
path(d="M32 60c-.188 0-.377-.053-.542-.16l-31-20C.173 39.656 0 39.34 0 39s.173-.656.458-.84l31-20c.33-.213.754-.213 1.084 0l31 20c.285.184.458.5.458.84s-.173.656-.458.84l-31 20c-.165.107-.354.16-.542.16zM2.845 39L32 57.81 61.155 39 32 20.19 2.845 39z")
|
||||
path(d="M32 51c-.188 0-.377-.053-.542-.16l-31-20C.173 30.656 0 30.34 0 30s.173-.656.458-.84l31-20c.33-.213.754-.213 1.084 0l31 20c.285.184.458.5.458.84s-.173.656-.458.84l-31 20c-.165.107-.354.16-.542.16zM2.845 30L32 48.81 61.155 30 32 11.19 2.845 30z")
|
||||
path(d="M32 42c-.188 0-.377-.053-.542-.16l-31-20C.173 21.656 0 21.34 0 21s.173-.656.458-.84l31-20c.33-.213.754-.213 1.084 0l31 20c.285.184.458.5.458.84s-.173.656-.458.84l-31 20c-.165.107-.354.16-.542.16zM2.845 21L32 39.81 61.155 21 32 2.19 2.845 21z")
|
||||
path(d="M31 27h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zm4-4h2v2h-2zm4 2h2v2h-2zm-16 0h2v2h-2zm12 2h2v2h-2zm-8-4h2v2h-2zm0 4h2v2h-2zm4 4h2v2h-2zm31 15h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zm0 4h2v2h-2zm0-54h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zm0 4h2v2h-2zM0 50h2v2H0zm0-4h2v2H0zm0 8h2v2H0zm0 4h2v2H0zM0 4h2v2H0zm0-4h2v2H0zm4 0h2v2H4zm4 0h2v2H8zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm22 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zM4 58h2v2H4zm4 0h2v2H8zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm22 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zM0 8h2v2H0zm0 4h2v2H0z")
|
||||
|
||||
|
||||
section.page-card.dark.right
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Image Sharing
|
||||
.page-card-summary
|
||||
p.
|
||||
Got a nice render, a Blender oddity, a cool screenshot?
|
||||
Share it instantly from within Blender to the Cloud, to the world!
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-image-sharing")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64")
|
||||
g(fill="none",
|
||||
stroke="#aaa",
|
||||
stroke-width="2",
|
||||
stroke-linejoin="round",
|
||||
stroke-miterlimit="10")
|
||||
path(d="M1 1h62v62H1zM4 59h2M8 59h2M12 59h2M60 49H48M46 49H27M60 53H40")
|
||||
path(d="M5 5h54v40H5z")
|
||||
path(d="M9 45v-3c0-1.656 1.344-3 3-3h6c1.656 0 3 1.344 3 3v3M29 45v-3c0-1.656 1.344-3 3-3h6c1.656 0 3 1.344 3 3v3M13 45v-3M17 45v-3M33 45v-3M37 45v-3M22 31h-5c-2.762 0-5 2.238-5 5v3M38 39v-3c0-2.762-2.238-5-5-5h-5M31 20c0 3.313-1 9-6 9s-6-5.687-6-9c0-1 0-5 6-5s6 4 6 5z")
|
||||
path(d="M29 27l-2 8h-4l-2-8M18 31c-4-3-5-9-5-9l6-3M32 31c4-3 5-9 5-9l-6-3M59 24L44 9l-8 8M44 9l8 36")
|
||||
circle(cx="12", cy="12", r="3")
|
||||
|
||||
|
||||
section.page-card
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Private Projects
|
||||
.page-card-summary.
|
||||
Create and manage your own personal projects.
|
||||
Upload assets and collaborate with other Blender Cloud members.
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-private-projects")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns='http://www.w3.org/2000/svg', width='56', height='64', viewbox='0 0 56 64')
|
||||
g(fill='#555')
|
||||
path(d='M42 38H14V26h28v12zm-26-2h24v-8H16v8zm-4-5H8c-1.654 0-3-1.346-3-3V15h2v13c0 .55.45 1 1 1h4v2z')
|
||||
path(d='M9.293 19.707L6 16.414l-3.293 3.293-1.414-1.414 4-4c.39-.39 1.023-.39 1.414 0l4 4-1.414 1.414zM48 31h-4v-2h4c.55 0 1-.45 1-1V15h2v13c0 1.654-1.346 3-3 3z')
|
||||
path(d='M53.293 19.707L50 16.414l-3.293 3.293-1.414-1.414L50 13.586l4.707 4.707M27 15h2v9h-2z')
|
||||
path(d='M31.293 19.707L28 16.414l-3.293 3.293-1.414-1.414L28 13.586l4.707 4.707M7 49H5V36c0-1.654 1.346-3 3-3h4v2H8c-.55 0-1 .45-1 1v13z')
|
||||
path(d='M6 50c-.256 0-.512-.098-.707-.293l-4-4 1.414-1.414L6 47.586l3.293-3.293 1.414 1.414-4 4c-.195.195-.45.293-.707.293zm45-1h-2V36c0-.55-.45-1-1-1h-4v-2h4c1.654 0 3 1.346 3 3v13z')
|
||||
path(d='M50 50.414l-4.707-4.707 1.414-1.414L50 47.586l3.293-3.293 1.414 1.414M27 40h2v9h-2z')
|
||||
path(d='M28 50.414l-4.707-4.707 1.414-1.414L28 47.586l3.293-3.293 1.414 1.414M6 12c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zM6 2C3.794 2 2 3.794 2 6s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zM6 64c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zM27 31h2v2h-2zm-4 0h2v2h-2zm8 0h2v2h-2z')
|
||||
|
||||
|
||||
section.pricing
|
||||
.container
|
||||
.row
|
||||
.col-md-12
|
||||
h2 Simple Pricing. Any payment method.
|
||||
.row
|
||||
.col-md-4.col-sm-4
|
||||
.box.monthly
|
||||
h3 Monthly
|
||||
.pricing-display
|
||||
span.currency-sign $
|
||||
span.digit-int 9
|
||||
span.digit-dec .90 / month*
|
||||
|
||||
.pricing-caption
|
||||
p * with a 3-months minimum period
|
||||
|
||||
ul
|
||||
li 100+ hours of high-quality training
|
||||
li All the open movies files and tutorials
|
||||
li Exclusive production insight & walk-throughs
|
||||
li <strong>Sync</strong> your Blender settings across devices
|
||||
li <strong>Share</strong> images & screenshots from within Blender
|
||||
li <strong>Download</strong> 1500+ textures & HDRIs from Blender
|
||||
|
||||
a.sign-up-now(href="https://store.blender.org/product/membership/")
|
||||
| Subscribe Now
|
||||
|
||||
.col-md-4.col-sm-4
|
||||
.box.yearly
|
||||
h3 Yearly
|
||||
.pricing-display
|
||||
span.currency-sign $
|
||||
span.digit-int 109
|
||||
span.digit-dec .00 / year
|
||||
.pricing-caption
|
||||
ul
|
||||
li 100+ hours of high-quality training
|
||||
li All the open movies files and tutorials
|
||||
li Exclusive production insight & walk-throughs
|
||||
li <strong>Sync</strong> your Blender settings across devices
|
||||
li <strong>Share</strong> images & screenshots from within Blender
|
||||
li <strong>Download</strong> 1500+ textures & HDRIs from Blender
|
||||
li.special 1 month free!
|
||||
|
||||
a.sign-up-now(href="https://store.blender.org/product/membership/")
|
||||
| Subscribe Now
|
||||
|
||||
.col-md-4.col-sm-4
|
||||
.box.education
|
||||
h3 Education
|
||||
|
||||
.pricing-caption
|
||||
p.
|
||||
We also provide flexible options for group subscription
|
||||
ideal for schools or teams.
|
||||
p.
|
||||
Get in touch to discuss direct support, custom solutions,
|
||||
team management tools and Single Sign-on.
|
||||
|
||||
a.sign-up-now(href="mailto:cloudsupport@blender.org")
|
||||
i.pi-email
|
||||
| Get in Touch
|
||||
|
||||
section.team(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
||||
.container
|
||||
.row
|
||||
.col-md-12
|
||||
h2.
|
||||
A restless team of artists and developers <br/>
|
||||
wants to share their work with you.
|
||||
|
||||
.people-container
|
||||
.people-intro
|
||||
h3 Blender Institute
|
||||
span Amsterdam, The Netherlands
|
||||
|
||||
.people-faces
|
||||
a.face(
|
||||
href="https://twitter.com/tonroosendaal",
|
||||
data-blenderhead='ton')
|
||||
img(alt="Ton", src="{{ url_for('static', filename='assets/img/people/ton.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/fsiddi",
|
||||
data-blenderhead='francesco')
|
||||
img(alt="Francesco", src="{{ url_for('static', filename='assets/img/people/francesco.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/hjalti",
|
||||
data-blenderhead='hjalti')
|
||||
img(alt="Hjalti", src="{{ url_for('static', filename='assets/img/people/hjalti.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/colinlevy",
|
||||
data-blenderhead='colin')
|
||||
img(alt="Colin", src="{{ url_for('static', filename='assets/img/people/colin.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/PabloVazquez_",
|
||||
data-blenderhead='pablo')
|
||||
img(alt="Pablo", src="{{ url_for('static', filename='assets/img/people/pablo.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/artificial3d",
|
||||
data-blenderhead='andy')
|
||||
img(alt="Andy", src="{{ url_for('static', filename='assets/img/people/andy.jpg')}}")
|
||||
a.face(
|
||||
href="https://developer.blender.org/p/sergey/",
|
||||
data-blenderhead='sergey')
|
||||
img(alt="Sergey", src="{{ url_for('static', filename='assets/img/people/sergey.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/sastuvel",
|
||||
data-blenderhead='sybren')
|
||||
img(alt="Sybren", src="{{ url_for('static', filename='assets/img/people/sybren.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/dfelinto",
|
||||
data-blenderhead='dalai')
|
||||
img(alt="dalai", src="{{ url_for('static', filename='assets/img/people/dalai.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/dfelinto",
|
||||
data-blenderhead='luca')
|
||||
img(alt="luca", src="{{ url_for('static', filename='assets/img/people/luca.jpg')}}")
|
||||
|
||||
.people-bio
|
||||
.bio#ton
|
||||
h3 Ton Roosendaal
|
||||
small CEO Blender Foundation. Producer Blender Institute
|
||||
span The Netherlands
|
||||
|
||||
.bio#francesco
|
||||
h3 Francesco Siddi
|
||||
small Pipeline Tools & Back-end Web Development
|
||||
span Italy
|
||||
|
||||
.bio#pablo
|
||||
h3 Pablo Vázquez
|
||||
small Lighting, Rendering. Front-end Web Development
|
||||
span Argentina
|
||||
|
||||
.bio#andy
|
||||
h3 Andy Goralczyk
|
||||
small Shading, Lighting, Rendering, FX
|
||||
span Germany
|
||||
|
||||
.bio#colin
|
||||
h3 Colin Levy
|
||||
small Director. Layout.
|
||||
span United States
|
||||
|
||||
.bio#hjalti
|
||||
h3 Hjalti Hjálmarsson
|
||||
small Director. Animation. Layout.
|
||||
span Iceland
|
||||
|
||||
.bio#sergey
|
||||
h3 Sergey Sharybin
|
||||
small Blender & Cycles Core Developer
|
||||
span Russia
|
||||
|
||||
.bio#sybren
|
||||
h3 Sybren Stüvel
|
||||
small Blender Cloud Developer
|
||||
span The Netherlands
|
||||
|
||||
.bio#dalai
|
||||
h3 Dalai Felinto
|
||||
small Blender Developer
|
||||
span Brazil
|
||||
|
||||
.bio#luca
|
||||
h3 Luca Rood
|
||||
small Blender Developer
|
||||
span The Netherlands
|
||||
|
||||
.people-container.online
|
||||
.people-intro
|
||||
h3 Online Collaborators
|
||||
span Contributing to Blender Cloud from all over the globe.
|
||||
|
||||
.people-faces
|
||||
a.face(
|
||||
href="https://twitter.com/davidrevoy",
|
||||
data-blenderhead='david')
|
||||
img(alt="David", src="{{ url_for('static', filename='assets/img/people/david.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/s_koenig",
|
||||
data-blenderhead='sebastian')
|
||||
img(alt="Sebastian", src="{{ url_for('static', filename='assets/img/people/sebastian.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/gleb_alexandrov",
|
||||
data-blenderhead='gleb')
|
||||
img(alt="Gleb", src="{{ url_for('static', filename='assets/img/people/gleb.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/the_mantissa",
|
||||
data-blenderhead='midge')
|
||||
img(alt="Midge", src="{{ url_for('static', filename='assets/img/people/midge.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/jpbouza",
|
||||
data-blenderhead='jpbouza')
|
||||
img(alt="Juan Pablo", src="{{ url_for('static', filename='assets/img/people/jpbouza.jpg')}}")
|
||||
|
||||
.people-bio
|
||||
.bio#gleb
|
||||
h3 Gleb Alexandrov
|
||||
small Lighting & Shading
|
||||
span Belarus
|
||||
|
||||
.bio#david
|
||||
h3 David Revoy
|
||||
small Illustrator & Concept Artist
|
||||
span France
|
||||
|
||||
.bio#midge
|
||||
h3 Midge Sinnaeve
|
||||
small Motion Graphics
|
||||
span Belgium
|
||||
|
||||
.bio#sebastian
|
||||
h3 Sebastian König
|
||||
small VFX
|
||||
span Germany
|
||||
|
||||
.bio#jpbouza
|
||||
h3 Juan Pablo Bouza
|
||||
small Rigging
|
||||
span Argentina
|
||||
|
||||
|
||||
section.page-card.oneofus.
|
||||
Join <strong>2021</strong> awesome people, <a href="">subscribe to Blender Cloud</a> now.
|
||||
|
||||
section.supported-by
|
||||
h2 Our projects were supported by
|
||||
img.logos(alt="Supported by", src="{{ url_for('static', filename='assets/img/support_logos.png') }}")
|
||||
|
||||
section.page-card.subscribe(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_bw_01.jpg')}})")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Support Blender, get inspiration, knowledge and tools in one place.
|
||||
a.page-card-cta(
|
||||
href="https://store.blender.org/product/membership/")
|
||||
i.pi-heart-filled
|
||||
| Subscribe Now
|
||||
|
||||
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script.
|
||||
|
||||
$('.triplet-card').click(function(){
|
||||
window.location.href = $(this).attr('data-url');
|
||||
});
|
||||
|
||||
function getSubscribers(){
|
||||
$.get('https://store.blender.org/product-counter/?prod=cloud', function(data) {
|
||||
}).done(function(data){
|
||||
if (data.total_sold > 0) {
|
||||
$('.page-card.oneofus').addClass('active');
|
||||
$('.page-card.oneofus strong').html(data.total_sold);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getSubscribers();
|
||||
|
||||
$('.people-faces .face').hover(
|
||||
function(){
|
||||
var who = $(this).data('blenderhead');
|
||||
$('#' + who).addClass('active');
|
||||
$(this).parent().prev().addClass('active');
|
||||
},
|
||||
function(){
|
||||
$('.bio, .people-intro').removeClass('active');
|
||||
}
|
||||
);
|
||||
|
||||
// Click anywhere in the page to hide the overlay
|
||||
function hideOverlay() {
|
||||
$('#page-overlay.video').removeClass('active');
|
||||
$('#page-overlay.video .video-embed').html('');
|
||||
}
|
||||
|
||||
$(document).click(function() {
|
||||
hideOverlay();
|
||||
});
|
||||
|
||||
$(document).keyup(function(e) {
|
||||
if (e.keyCode == 27) {
|
||||
hideOverlay();
|
||||
}
|
||||
});
|
||||
|
||||
$('a.watch-video').click(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
$('#page-overlay.video').addClass('active');
|
||||
|
||||
var videoId = $(this).attr('data-youtube-id');
|
||||
$('#page-overlay .video-embed').html('<iframe src="https://www.youtube.com/embed/' + videoId +'?rel=0&showinfo=0;autoplay=1" frameborder="0" allowfullscreen></iframe>')
|
||||
});
|
||||
|
||||
| {% endblock %}
|
@ -2,31 +2,31 @@ doctype
|
||||
html(lang="en")
|
||||
head
|
||||
meta(charset="utf-8")
|
||||
title {% if self.page_title() %}{% block page_title %}{% endblock %} — {% endif %}Blender Cloud
|
||||
title {% if self.page_title() %}{% block page_title %}{% endblock %} — {% endif %}Pillar
|
||||
meta(name="viewport", content="width=device-width, initial-scale=1.0")
|
||||
meta(name="description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(name="author", content="Blender Institute")
|
||||
meta(name="description", content="")
|
||||
meta(name="author", content="")
|
||||
meta(name="theme-color", content="#3e92aa")
|
||||
|
||||
| {% if config['GOOGLE_SITE_VERIFICATION'] %}
|
||||
meta(name="google-site-verification" content="{{ config['GOOGLE_SITE_VERIFICATION'] }}")
|
||||
| {% endif %}
|
||||
|
||||
meta(property="og:site_name", content="Blender Cloud")
|
||||
meta(property="og:site_name", content="")
|
||||
meta(property="og:locale", content="en_US")
|
||||
meta(name="twitter:card", content="summary_large_image")
|
||||
meta(name="twitter:site", content="@Blender_Cloud")
|
||||
meta(name="twitter:site", content="")
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:title", content="Blender Cloud")
|
||||
meta(property="og:url", content="https://cloud.blender.org")
|
||||
meta(property="og:type", content="website")
|
||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_gleb_locomotive.jpg')}}")
|
||||
meta(property="og:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(property="og:title", content="")
|
||||
meta(property="og:url", content="")
|
||||
meta(property="og:type", content="")
|
||||
meta(property="og:image", content="")
|
||||
meta(property="og:description", content="")
|
||||
|
||||
meta(name="twitter:title", content="Blender Cloud")
|
||||
meta(name="twitter:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_gleb_locomotive.jpg')}}")
|
||||
meta(name="twitter:title", content="")
|
||||
meta(name="twitter:description", content="")
|
||||
meta(name="twitter:image", content="")
|
||||
| {% endblock %}
|
||||
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery-3.1.0.min.js')}}")
|
||||
@ -67,150 +67,7 @@ html(lang="en")
|
||||
|
||||
body(class="{{ title }}")
|
||||
.container-page
|
||||
header.navbar-backdrop-container
|
||||
| {% block header_backdrop %}
|
||||
img(src="{{ url_for('static', filename='assets/img/backgrounds/pattern_02_blur.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% with messages = get_flashed_messages(with_categories=True) %}
|
||||
| {% if messages %}
|
||||
|
||||
| {% for (category, message) in messages %}
|
||||
.alert(role="alert", class="alert-{{ category }}")
|
||||
i.alert-icon(class="{{ category }}")
|
||||
span {{ message }}
|
||||
button.close(type="button", data-dismiss="alert")
|
||||
i.pi-cancel
|
||||
| {% endfor %}
|
||||
|
||||
| {% endif %}
|
||||
| {% endwith %}
|
||||
|
||||
nav.navbar.navbar-transparent.navbar-fixed-top
|
||||
.navbar-overlay
|
||||
|
||||
.navbar-container
|
||||
header.navbar-header
|
||||
button.navbar-toggle(data-target=".navbar-collapse", data-toggle="collapse", type="button")
|
||||
span.sr-only Toggle navigation
|
||||
i.pi-menu
|
||||
a.navbar-brand(
|
||||
href="{{ url_for('main.homepage') }}",
|
||||
title="Blender Cloud")
|
||||
span.app-logo
|
||||
i.pi-blender-cloud
|
||||
|
||||
| {% block navigation_search %}
|
||||
.search-input
|
||||
input#cloud-search(
|
||||
type="text",
|
||||
placeholder="Search assets, tutorials...")
|
||||
i.search-icon.pi-search
|
||||
| {% endblock %}
|
||||
|
||||
nav.collapse.navbar-collapse
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
| {% if node and node.properties and node.properties.category %}
|
||||
| {% set category = node.properties.category %}
|
||||
| {% else %}
|
||||
| {% set category = title %}
|
||||
| {% endif %}
|
||||
|
||||
| {% block navigation_sections %}
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.main_blog') }}",
|
||||
title="Blender Cloud Blog",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category == 'blog' %}active{% endif %}")
|
||||
span Blog
|
||||
|
||||
li(class="dropdown libraries")
|
||||
a.navbar-item.dropdown-toggle(
|
||||
href="",
|
||||
data-toggle="dropdown",
|
||||
title="Libraries")
|
||||
span Libraries
|
||||
i.pi-angle-down
|
||||
|
||||
ul.dropdown-menu
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='hdri') }}",
|
||||
title="HDRI Library",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-globe
|
||||
| HDRI
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='textures') }}",
|
||||
title="Textures Library",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-folder-texture
|
||||
| Textures
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='characters') }}",
|
||||
title="Character Library",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-character
|
||||
| Characters
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='gallery') }}",
|
||||
title="Curated artwork collection",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-image
|
||||
| Art Gallery
|
||||
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.training') }}",
|
||||
title="Training & Tutorials",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category == 'training' %}active{% endif %}")
|
||||
span Training
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.open_projects') }}",
|
||||
title="Browse all the Open Projects",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category in ['open-projects', 'film'] %}active{% endif %}")
|
||||
span Open Projects
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.services') }}",
|
||||
title="Blender Cloud Services",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category == 'services' %}active{% endif %}")
|
||||
span Services
|
||||
| {% endblock %}
|
||||
|
||||
| {% if current_user.is_anonymous %}
|
||||
li
|
||||
a.navbar-item(
|
||||
href="https://store.blender.org/product/membership/",
|
||||
title="Sign up") Sign up
|
||||
| {% endif %}
|
||||
|
||||
| {% from '_macros/_menu.html' import navigation_menu_notifications, navigation_menu_user %}
|
||||
| {{ navigation_menu_notifications(current_user) }}
|
||||
| {{ navigation_menu_user(current_user) }}
|
||||
|
||||
|
||||
.page-content
|
||||
#search-overlay
|
||||
| {% block page_overlay %}
|
||||
#page-overlay
|
||||
| {% endblock %}
|
||||
.page-body
|
||||
| {% block body %}{% endblock %}
|
||||
|
||||
@ -218,105 +75,17 @@ html(lang="en")
|
||||
#footer-container
|
||||
| {% block footer_navigation %}
|
||||
#footer-navigation
|
||||
.container
|
||||
.row
|
||||
.col-md-4.col-xs-6
|
||||
.footer-support
|
||||
h4 Support & Feedback
|
||||
p.
|
||||
Let us know what you think or if you have any issues
|
||||
just write to cloudsupport at blender dot org
|
||||
|
||||
.col-md-2.col-xs-6
|
||||
ul.footer-social
|
||||
li
|
||||
a(href="https://www.facebook.com/BlenderCloudOfficial/",
|
||||
title="Follow us on Facebook")
|
||||
i.pi-social-facebook
|
||||
li
|
||||
a(href="https://twitter.com/Blender_Cloud",
|
||||
title="Follow us on Twitter")
|
||||
i.pi-social-twitter
|
||||
|
||||
.col-md-2.col-xs-6
|
||||
h4
|
||||
a(href="{{ url_for('main.homepage') }}")
|
||||
| Blender Cloud
|
||||
ul.footer-links
|
||||
li
|
||||
a(href="{{ url_for('main.main_blog') }}",
|
||||
title="Blender Cloud Blog")
|
||||
| Blog
|
||||
|
||||
li
|
||||
a(href="{{ url_for('main.services') }}",
|
||||
title="Blender Cloud Services")
|
||||
| Services
|
||||
|
||||
li
|
||||
a(href="https://cloud.blender.org/blog/blender-cloud-v3",
|
||||
title="About Blender Cloud")
|
||||
| About
|
||||
|
||||
.col-md-2.col-xs-6
|
||||
h4
|
||||
a(href="https://www.blender.org",
|
||||
title="Blender official Website")
|
||||
| Blender
|
||||
ul.footer-links
|
||||
li
|
||||
a(href="https://www.blender.org",
|
||||
title="Blender official Website")
|
||||
| Blender.org
|
||||
li
|
||||
a(href="https://store.blender.org/",
|
||||
title="The official Blender Store")
|
||||
| Blender Store
|
||||
|
||||
.col-md-2.col-xs-6.special
|
||||
| With the support of the <br/> MEDIA Programme of the European Union<br/><br/>
|
||||
img(alt="MEDIA Programme of the European Union",
|
||||
src="https://gooseberry.blender.org/wp-content/uploads/2014/01/media_programme.png")
|
||||
| {% endblock %}
|
||||
| {% endblock footer_navigation %}
|
||||
|
||||
| {% block footer %}
|
||||
footer.container
|
||||
#hop(title="Be awesome in space")
|
||||
i.pi-angle-up
|
||||
| {% endblock %}
|
||||
| {% endblock %}
|
||||
|
||||
#notification-pop(data-url="", data-read-toggle="")
|
||||
.nc-progress
|
||||
a#pop-close(href="#", title="Dismiss")
|
||||
i.pi-cancel
|
||||
.nc-item
|
||||
.nc-avatar
|
||||
.nc-text
|
||||
span.nc-date
|
||||
a(href="")
|
||||
|
||||
noscript
|
||||
link(href='//fonts.googleapis.com/css?family=Roboto:300,400', rel='stylesheet', type='text/css')
|
||||
| {% endblock footer %}
|
||||
| {% endblock footer_container%}
|
||||
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.bootstrap-3.3.7.min.js', v=17320171) }}")
|
||||
|
||||
script.
|
||||
$(document).ready(function() {
|
||||
{% if current_user.is_authenticated %}
|
||||
getNotificationsLoop(); // Check for new notifications in the background
|
||||
|
||||
// Resize #notifications and change overflow for scrollbars
|
||||
$(window).on("resize", function() { notificationsResize(); });
|
||||
{% endif %}
|
||||
});
|
||||
|
||||
if (typeof $().tooltip != 'undefined'){
|
||||
$('[data-toggle="tooltip"]').tooltip({'delay' : {'show': 0, 'hide': 0}});
|
||||
}
|
||||
if(typeof($.fn.popover) != 'undefined'){
|
||||
$('[data-toggle="popover"]').popover();
|
||||
}
|
||||
|
||||
| {% block footer_scripts_pre %}{% endblock %}
|
||||
| {% block footer_scripts %}{% endblock %}
|
||||
|
@ -1,247 +0,0 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% block page_title %}Services{% endblock %}
|
||||
|
||||
| {% set title = 'services' %}
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:type", content="website")
|
||||
meta(property="og:url", content="{{ url_for('main.services') }}")
|
||||
|
||||
meta(property="og:title", content="Services - Blender Cloud")
|
||||
meta(name="twitter:title", content="Services - Blender Cloud")
|
||||
meta(property="og:description", content="Personal Projects · Blender Integration · Texture Browsing · Production Management")
|
||||
meta(name="twitter:description", content="Personal Projects · Blender Integration · Texture Browsing · Production Management")
|
||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_services.jpg')}}")
|
||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_services.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block header_backdrop %}
|
||||
.navbar-backdrop(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/services_projects.jpg')}})")
|
||||
.navbar-backdrop-overlay
|
||||
| {% endblock %}
|
||||
|
||||
| {% block page_overlay %}
|
||||
#page-overlay.video
|
||||
.video-embed
|
||||
| {% endblock %}
|
||||
|
||||
| {% block body %}
|
||||
#page-container
|
||||
.container
|
||||
#page-header
|
||||
.page-title
|
||||
| Blender Cloud Services
|
||||
.page-title-summary
|
||||
span.text-background
|
||||
p.
|
||||
Blender Cloud is the creative hub for your projects, powered by Free and Open Source software.
|
||||
|
||||
p.
|
||||
On Blender Cloud you can create and share personal projects, access our texture and HDRI
|
||||
library (or create your own), keep track of your production, manage your renders and much more!
|
||||
|
||||
|
||||
- var addon_text = 'Available through the <a href="{{ url_for(\'main.services\') }}#blender-cloud-add-on">Blender Cloud add-on</a>'
|
||||
|
||||
#page-content
|
||||
|
||||
section#blender-cloud-add-on.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Blender Cloud add-on
|
||||
.page-card-summary
|
||||
p.
|
||||
The Blender Cloud add-on provides access to most of our services directly within Blender.
|
||||
p.
|
||||
Use the add-on to share images online, submit renders to Flamenco or browse textures and HDRI libraries!
|
||||
|
||||
hr
|
||||
|
||||
small Blender Cloud add-on requires Blender 2.78 or newer
|
||||
|
||||
a.page-card-cta.download(
|
||||
href="https://cloud.blender.org/r/downloads/blender_cloud-latest-addon.zip")
|
||||
i.pi-download
|
||||
| Download add-on <small>v</small> {{ config.BLENDER_CLOUD_ADDON_VERSION }}
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/blender_cloud_addon_thumbnail.png')}}")
|
||||
|
||||
section#blender-sync.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Blender Sync
|
||||
.page-card-summary
|
||||
| Save your settings once. Use them anywhere.
|
||||
| Carry your Blender configuration with you,
|
||||
| use our add-on to sync your keymaps and preferences.
|
||||
hr
|
||||
small Blender Sync is <strong>free</strong> for everyone! No subscription required.
|
||||
small This add-on requires Blender 2.78 or newer.
|
||||
|
||||
.tip !{addon_text}
|
||||
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-blender-sync")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/sync_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#texture-browser.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Texture & HDRI Browser
|
||||
.page-card-summary
|
||||
p.
|
||||
Access the <a href="https://cloud.blender.org/p/textures/">Blender Cloud Textures</a>
|
||||
library from within Blender using our exclusive add-on.
|
||||
Create, manage and share <em>your own</em> texture libraries!
|
||||
|
||||
.tip !{addon_text}
|
||||
|
||||
a.page-card-cta.js-watch-video.download(
|
||||
href="https://www.youtube.com/watch?v=-srXYv2Osjw",
|
||||
data-youtube-id="-srXYv2Osjw")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/tex_library_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#image-sharing.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Image Sharing
|
||||
.page-card-summary
|
||||
| Got a nice render, a Blender oddity, a cool screenshot?
|
||||
| Share it instantly from within Blender to the Cloud, to the world!
|
||||
|
||||
.tip !{addon_text}
|
||||
|
||||
a.page-card-cta.download.js-watch-video(
|
||||
href="https://www.youtube.com/watch?v=yvtqeMBOAyk",
|
||||
data-youtube-id="yvtqeMBOAyk")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
a.page-card-cta.outline(
|
||||
href="https://cloud.blender.org/blog/introducing-image-sharing")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/image_sharing_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#projects.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Private Projects
|
||||
.page-card-summary.
|
||||
Create and manage your own personal projects.
|
||||
Upload assets and collaborate with other Blender Cloud members.
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-private-projects")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/projects_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#attract.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Attract
|
||||
.page-card-summary.
|
||||
Production-management software for your film, game, or commercial projects.
|
||||
|
||||
a.page-card-cta.download.js-watch-video(
|
||||
href="https://www.youtube.com/watch?v=b9x1rlyyt_o",
|
||||
data-youtube-id="b9x1rlyyt_o")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/attract-and-flamenco-public-beta",
|
||||
title="Learn more about Attract")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/attract_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#flamenco.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Flamenco
|
||||
.page-card-summary.
|
||||
Take control of your computing infrastructure and get things done.
|
||||
|
||||
a.page-card-cta.download.js-watch-video(
|
||||
href="https://www.youtube.com/watch?v=7cnFKhsM67Q",
|
||||
data-youtube-id="7cnFKhsM67Q")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://flamenco.io",
|
||||
title="Learn more about Flamenco")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/flamenco_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
| {% if not current_user.has_role('subscriber') %}
|
||||
section.page-card.subscribe(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| All of this, plus hours of training and production assets.
|
||||
.page-card-summary
|
||||
| Join us for only $9.90/month!
|
||||
a.page-card-cta(
|
||||
href="https://store.blender.org/product/membership/")
|
||||
| Subscribe Now
|
||||
| {% endif %}
|
||||
|
||||
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script.
|
||||
// Click anywhere in the page to hide the overlay
|
||||
function hideOverlay() {
|
||||
$('#page-overlay.video').removeClass('active');
|
||||
$('#page-overlay.video .video-embed').html('');
|
||||
}
|
||||
|
||||
$(document).click(function() {
|
||||
hideOverlay();
|
||||
});
|
||||
|
||||
$(document).keyup(function(e) {
|
||||
if (e.keyCode == 27) {
|
||||
hideOverlay();
|
||||
}
|
||||
});
|
||||
|
||||
$('a.js-watch-video').click(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
$('#page-overlay.video').addClass('active');
|
||||
|
||||
var videoId = $(this).attr('data-youtube-id');
|
||||
$('#page-overlay .video-embed').html('<iframe src="https://www.youtube.com/embed/' + videoId +'?rel=0&showinfo=0;autoplay=1" frameborder="0" allowfullscreen></iframe>')
|
||||
});
|
||||
|
||||
| {% endblock %}
|
Loading…
x
Reference in New Issue
Block a user