Белогорье планировалось снимать в предгорьях Кавказа, и задолго до начала съемок были выбраны живописные самшитовые заросли в окрестностях Сочи. Но к моменту начала съемок почти весь самшит оказался уничтожен бабочкой-огневкой. Экологическая катастрофа вынудила съемочную группу углубиться в горы в поисках уцелевших реликтовых рощ. Скалы, по которым вынуждены пробираться герои фильма, снимали в горах Кабардино-Балкарии и Адыгеи. Сцены, где Иван впервые попадает в древний мир, снимались в Можайском районе Подмосковья.
Корону Варвары сплели из кружев, а потом методом гальванизации напылили металл – сначала медь, потом серебро.
Водоем для съемок сцен на болоте был создан в павильоне. На его постройку ушло три недели, а также 200 тонн воды.
Персонаж водяного (Сергей Бурунов) был полностью создан при помощи компьютерной анимации.