Belle-Ve Bricks

Custom Creations,
Unforgettable Impressions.

Creative LEGO Photography Tips to Amaze Your Fans
Creative LEGO Photography Tips to Amaze Your Fans

10 Creative LEGO® Photography Tips to Amaze Your Fans

Trusted by Over 392 Distinctive Clients
Custom model
Bring Your Idea to Life

LEGO Photography might sound like a strange concept, but it’s an amazing idea and also a great pastime. It’s a lot of fun, you get to showcase your creativity and really push the limits in a fun way. Granted, taking photos of LEGO® sets might not seem that exciting, but it’s actually very engaging and rewarding. Plus, you will find yourself experimenting, trying out new things and seeing what works. Which is why here we have a list with the best tips and ideas that will help push the limits in a creative manner.

Focus on scale

A great thing you can do is to try and show the scale of LEGO® pieces and really push it to the next level in a creative manner. The main idea is to bring in something different and empowering, then try to make it feel unique.

Taking a photo of a LEGO® set or piece and then adding something much larger than it just to add that sense of scale is an extremely important thing to keep in mind.

As an example we have LEGO® Minifigure Batman, a LEGO® banana and a real banana for scale!

Use a variety of lenses

Every lens has its different specifics. That’s why you want to have multiple lenses and see how it all comes together. The benefits are great because you can bring in something new and different.

Don’t worry it doesn’t have to be ridiculously expensive, the newer smart phone cameras are amazing so if you intend to use your phone then you can even look at lens that fit on to it. These can be bought for as little as £10 to £20 (or $15 to $25) from Amazon!

With LEGO® Photography, you always want to experiment and you will appreciate that if you are using multiple lenses. They give you the sense of scale, while also empowering your mind and creativity.

Lighting is important

Ideally, you want to have natural light if possible. If you can’t, then having a good lighting system can help you a lot. It’s one of those things that you need to invest in, just to ensure that you’re getting the best visuals.

It might need quite a lot of experiments, but in the end the quality is great.

If you want to do this on the cheap there are loads of tutorials online that show you how to make your own lighting box for your LEGO® photography.

How to Make a DIY Light Box in 7 Easy Steps (fixthephoto.com)

You may have to experiment with a few lighting systems if you want to obtain great results, and that’s the thing to keep in mind as much as possible.

It is also possible to pick up some lighting boxes from Amazon at a relatively cheap price, these start from around $15 for a smallish one that would be okay for BrickHeadz or minifigures.

Personally I like the idea of making your own, you can then choose to make it based on your LEGO® photography requirements.

lego photography photo box diy
Credit to fixthephoto.com

Find the right backgrounds

There are different backgrounds you can go with. For LEGO® Photography, you want to use smooth materials in the background, so you can focus on the LEGO® set and not the background itself. Plus, if it’s smooth and not that damaging, you get to prevent any possible problems.

Use partitions on either side of the model

This is important if you are looking to remove glare. In the past few years, glare has become a major issue for most people since it can ruin some LEGO® photos.

That’s why we believe adding partitions on either side of the model can help a lot. This is a great idea, and it works even better if you use softer lights, not stuff that’s super bright.

That’s the thing you want to keep in mind, and it will surely convey great results and a very good value every time. It’s definitely worth the effort.

Use a tripod

We think that using a tripod is actually the ideal way to take LEGO® photography shots.

Why is that? You eliminate camera shakes, you can have the camera in much stranger and challenging positions as well. In the end, everything looks great and you will be amazed with the value and results.

That’s why it can be a great idea to have a timer and tripod, because you can take insane shots.

Going back to the mobile phone example you can get some good tripods with adjustable legs which give you the flexibility to position the camera for more awkward shots whilst also ensuring it is kept still.

Focus on something else than the figure or set itself

The reason you want to do that is because it gives more contrast to the set/figure, while making it a part of the environment.

Of course, you also want to take shots of the set itself, but doing this can be a great idea and it will give you the benefits and value that you want.

At the end of the day, it will make it a lot easier for you to show your ideas, and you can make stuff a bit different.

As an example of this here’s my sigfig. Do you have one?

Try the Lock and Move technique

You can lock on to the subject, but if there are focusing issues, you can move back and then try again.

The lock and move technique is a good option because you can find all kinds of ways to experiment and ensure that your focus is locked in and it’s all good to go.

That’s the ideal approach here and it will surely offer you an amazing time.

Go with a DSLR instead of a point and shoot

The reason for that is a DSLR camera is a lot more versatile. You can modify the aperture, focus, zoom and all kinds of features.

As a result, you get more control over the image quality and that alone can make a huge difference.

It’s a great idea to keep in mind, and the benefits are very impressive. That’s what makes it well worth the effort.

Credit to Life Wire

If you want to learn a bit more about the differences this handy post by Life Wire should help explain it.

Use polarizing filters

What we noticed during LEGO® photography is that LEGO® sets and pieces are responding nicely to polarizing filters.

This is great for you since you can control some of the color saturation, at least for some of the angles.

It does take a little bit to narrow down what filters work for you, but the benefits can be really nice and that’s the thing that you want to go for.

Conclusion

LEGO Photography is a great hobby, but it can take a bit of time to get used to it and to figure out how to take the best shorts. But it’s not impossible, and that’s what really makes it such a great idea in the first place.

We recommend using these tips and tricks because not only are they pushing the limits in a unique way, but the benefits are very impressive. It does take a bit of a trial and error to figure out how to obtain the best results, but the payoff can be second to none.

Yes, LEGO® photography takes time and effort, but in the end you will be amazed with the shots you can pull off if you have the right settings, equipment and ideas.

If you are interested in learning more about improving your own LEGO® MOCs click here to check out Kim Plata’s series of “How To Improve on a Budget” posts

<div class="badge-base LI-profile-badge" data-locale="en_US" data-size="large" data-theme="dark" data-type="HORIZONTAL" data-vanity="ferdi-vol" data-version="v1"><a class="badge-base__link LI-simple-link" href="https://www.linkedin.com/in/%E2%9C%85-ferdi-vol-corporate-gifts/?trk=profile-badge"></a></div>
/* Auto generated, hash = 5dceu9kevqjdyuy2uw1atqrsu */
//TODO: Break this file down so that we can actually unit test it.
(function(window) {
  /**
  * Renders all unrendred LinkedIn Badges on the page
  */
  window.LIRenderAll = function () {
    var CALLBACK_NAME     = 'LIBadgeCallback', //Must match callback on helpers.js
        BADGE_NAMES       = '.LI-profile-badge, .LI-entity-badge',
        // TODO -- tracking param for other badge types
        TRACKING_PARAM    = 'profile-badge',
        responsesReceived = 0, //Keeps track of number of responses recieved for proper cleanup when finished
        expectedResponses = 0, //Keeps track of number of responses to expect
        scripts           = [ ], //Keeps track of scripts added for proper cleanup when finished
        childScripts      = {}, //Keeps track of child scripts to render
        badges            = Array.prototype.slice.call(document.querySelectorAll(BADGE_NAMES));

    var i, len, badge, rendered;
    for (i = 0, len = badges.length;  i < len; i++) {
      badge    = badges[i];
      rendered =  badge.getAttribute('data-rendered');
      if (!rendered) {
        expectedResponses++;
        badge.setAttribute('data-rendered', true);
        renderBadge(badge);
      }
    }

    function isCNDomain() {
      if (typeof window !== "undefined") {
        var hostName = window.location && window.location.hostname ||  '';
        return (/linkedin(-ei)?.cn$/).test(hostName);
      }

      return false;
    }

    function generateUrl(isEI) {
      var domainPrefix = isEI ? 'https://badges.linkedin-ei' : 'https://badges.linkedin';
      if (isCNDomain()) {
        return domainPrefix + ".cn/";
      }

      return domainPrefix + ".com/";
    }

    function getBadgeKeyQueryParams(badge) {
      return Array.prototype.slice.call(badge.attributes).filter(function (attr) {
        return attr.name.lastIndexOf('data-key-', 0) !== -1;
      }).map(function (attr) {
        // Most browsers automatically lowercase the attribute name when its being read
        // We are calling lowercase on it again to ensure consistency for any browsers that are lagging behind.
        return encodeURIComponent(attr.name.replace('data-', '').toLowerCase()) + '=' + encodeURIComponent(attr.value);
      });
    }

    /*
    * Renders a single badge on the page
    * @param badge: div element of badge to render
    */
    function renderBadge(badge) {
      var size       = badge.getAttribute('data-size'),
          locale     = badge.getAttribute('data-locale'),
          type       = badge.getAttribute('data-type'),
          theme      = badge.getAttribute('data-theme'),
          vanity     = badge.getAttribute('data-vanity'),
          version    = badge.getAttribute('data-version'),
          isEI       = badge.hasAttribute('data-ei'),
          entity     = badge.getAttribute('data-entity'),
          isCreatePage = badge.hasAttribute('data-iscreate'),
          uid        = Math.round(1000000 * Math.random()),
          baseUrl = generateUrl(isEI),
          queryParams = [
            'locale=' + encodeURIComponent(locale),
            'badgetype=' + encodeURIComponent(type),
            'badgetheme=' + encodeURIComponent(theme),
            'uid=' + encodeURIComponent(uid),
            'version=' + encodeURIComponent(version)
          ],
          url;

      if (version === 'v2') {
        baseUrl += 'view';
        queryParams.push('badgesize=' + encodeURIComponent(size));
        queryParams.push('entity=' + encodeURIComponent(entity));
        queryParams = queryParams.concat(getBadgeKeyQueryParams(badge));
      } else {
        baseUrl += 'profile';
        queryParams.push('maxsize=' + encodeURIComponent(size));
        queryParams.push('trk=' + encodeURIComponent(TRACKING_PARAM));
        queryParams.push('vanityname=' + encodeURIComponent(vanity));
      }

      if (isCreatePage) {
        queryParams.push('fromCreate=true');
      }

      url = baseUrl + '?' + queryParams.join('&');
      badge.setAttribute('data-uid' , uid);
      jsonp(url); //Calls responseHandler when done
    }

    /**
    * Handles a response from the server. Finds badge matching badgeUid and inserts badgeHtml there
    * @param badgeHtml: String representing contents of the badge
    * @param badgeUid: UID of the badge to target
    **/
    function responseHandler(badgeHtml, badgeUid) {
      responsesReceived ++;

      var i, badge, uid, isCreate;
      var defaultWidth = 330 // max possible width
      var defaultHeight = 300 // max possible height

      for (i = 0, len = badges.length; i < len; i++) {
        badge = badges[i];
        // isCreate needed to prevent reloading artdeco script tag
        isCreate = badge.getAttribute('data-iscreate');
        uid   = parseInt(badge.getAttribute('data-uid'), 10);
        if (uid === badgeUid) {
          var badgeMarkup = `<body>${badgeHtml}</body>`
          var iframe = document.createElement('iframe');
          iframe.onload = function() {
            var iframeBody = iframe.contentWindow.document.body;
            // 5 px buffer to avoid the badge border being cut off.
            iframe.setAttribute('height', (iframeBody.scrollHeight || defaultHeight) + 5);
            iframe.setAttribute('width', (iframeBody.scrollWidth || defaultWidth) + 5);
          };
          iframe.setAttribute('frameBorder', '0');
          iframe.style.display = 'block';
          badge.appendChild(iframe);
          iframe.contentWindow.document.open();
          iframe.contentWindow.document.write(badgeMarkup);
          iframe.contentWindow.document.close();
          replaceScriptTags(badge, isCreate);
        }
      }
      tryClean();
    }

  // These functions are needed because badge markup is added via innerHtml property which does not run script tags
  function replaceScriptTags(node, isCreate) {
    if (shouldReplaceNode(node, isCreate)) {
      node.parentNode.replaceChild(cloneScriptNode(node), node);
      childScripts[node.src] = true;
    } else {
      var i = 0,
          children = node.childNodes;
      while (i < children.length) {
        replaceScriptTags(children[i++], isCreate);
      }
    }
    return node;
  }

  function shouldReplaceNode(node, isCreate) {
    return isScriptNode(node) && !childScripts[node.src] && (!isCreate || (isCreate && !node.getAttribute('data-isartdeco')));
  }

  function isScriptNode(node) {
    return node.tagName === 'SCRIPT';
  }

  function cloneScriptNode(node){
    var script  = document.createElement("script");
    for( var i = node.attributes.length-1; i >= 0; i-- ) {
      script.setAttribute( node.attributes[i].name, node.attributes[i].value );
    }
    return script;
  }

    // Gets all incoming responses
    window[CALLBACK_NAME] = responseHandler;

    /**
    * Tries to clean added tags
    **/
    function tryClean() {
      //Clean up after all requests are done..
      //Accounts for people including script more than once
      var done = (responsesReceived >= expectedResponses && expectedResponses > 0) || responsesReceived >= badges.length;
      if (done) {
        delete window[CALLBACK_NAME];

        // remove all script tags
        scripts.map(function(script){
          document.body.removeChild(script);
        });

      }
    }

    /*
    * Makes Jsonp request, responses handles by CALLBACK_NAME
    * @param url String: url of server to make request to
    */
    function jsonp(url) {
      var script = document.createElement('script');
      script.src = url;
      scripts.push(script);
      document.body.appendChild(script);
    }
  };

  if (document.readyState === 'complete') {
    window.LIRenderAll();
  } else {
    window.addEventListener('load', window.LIRenderAll, false);
  }

})(window);
Popular Posts