Меню

Blender ошибка при импорте obj

You stumbled upon a curious problem with filename handling in the .obj format, that isn’t well defined in the specification. I will discuss this with the Blender devs, perhaps the importer needs small adjustments to parse the file correctly under these specific circumstances. Since it worked in 2.79b it can be considered a regression.

TL;DR The handling for filenames with blanks isn’t well defined in the .obj format specification and Blender expected a different format than what was provided in your file.


The Problem

The .obj is a text format for storing 3D models. The format contains various attributes that describe the geometry of the model. Typically the .obj is accompanied by a .mtl which describes the material and textures applied to the model. In order to keep track which files belong together, the .obj may contain a mtllib attribute followed by the filename of the .mtl.

Usually the beginning of an .obj would look something like this:

# Blender v2.80 (sub 74) OBJ File: ''
# www.blender.org
mtllib test.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000

In case of your file it is:

# 
mtllib "tree stump1 original model.mtl"
usemtl tree_stump1_original_model
v 4.136163 -1.200306 -10.798826 0.113725 0.152941 0.141176
v 4.140683 -1.205297 -10.794383 0.117647 0.156863 0.145098

Notice that the filename contains quotations marks. This is causing the problem. The software you used to export this model quoted the filename to avoid confusion on how to interpret the filename. While this is common practice in other file formats the specification for .obj doesn’t mention quoting filenames and says specifically:

Blank space and blank lines can be freely added to the file to aid in formatting and readability.

Which can be interpreted as blanks in filenames can be stored as is, which is precisely what Blender does. Unfortunately Blender’s importer doesn’t expect the quotation marks in the filename therefore misinterpreting the correct filepath. This results in the aforementioned error in your question.


The Fix

Open the .obj file in a text editor of your choice an remove the quotes and save. It should look like this:

# 
mtllib tree stump1 original model.mtl
usemtl tree_stump1_original_model
v 4.136163 -1.200306 -10.798826 0.113725 0.152941 0.141176

The file can now be imported by Blender.

You stumbled upon a curious problem with filename handling in the .obj format, that isn’t well defined in the specification. I will discuss this with the Blender devs, perhaps the importer needs small adjustments to parse the file correctly under these specific circumstances. Since it worked in 2.79b it can be considered a regression.

TL;DR The handling for filenames with blanks isn’t well defined in the .obj format specification and Blender expected a different format than what was provided in your file.


The Problem

The .obj is a text format for storing 3D models. The format contains various attributes that describe the geometry of the model. Typically the .obj is accompanied by a .mtl which describes the material and textures applied to the model. In order to keep track which files belong together, the .obj may contain a mtllib attribute followed by the filename of the .mtl.

Usually the beginning of an .obj would look something like this:

# Blender v2.80 (sub 74) OBJ File: ''
# www.blender.org
mtllib test.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000

In case of your file it is:

# 
mtllib "tree stump1 original model.mtl"
usemtl tree_stump1_original_model
v 4.136163 -1.200306 -10.798826 0.113725 0.152941 0.141176
v 4.140683 -1.205297 -10.794383 0.117647 0.156863 0.145098

Notice that the filename contains quotations marks. This is causing the problem. The software you used to export this model quoted the filename to avoid confusion on how to interpret the filename. While this is common practice in other file formats the specification for .obj doesn’t mention quoting filenames and says specifically:

Blank space and blank lines can be freely added to the file to aid in formatting and readability.

Which can be interpreted as blanks in filenames can be stored as is, which is precisely what Blender does. Unfortunately Blender’s importer doesn’t expect the quotation marks in the filename therefore misinterpreting the correct filepath. This results in the aforementioned error in your question.


The Fix

Open the .obj file in a text editor of your choice an remove the quotes and save. It should look like this:

# 
mtllib tree stump1 original model.mtl
usemtl tree_stump1_original_model
v 4.136163 -1.200306 -10.798826 0.113725 0.152941 0.141176

The file can now be imported by Blender.

0 / 0 / 0

Регистрация: 16.11.2013

Сообщений: 70

1

16.10.2014, 08:25. Показов 13552. Ответов 3


Подскажите пожалуйста, почему Blender выдает ошибку при импорте объектов, допустим при попытке импорта объекта в формате (.obj) вылетает такая ошибка

Миниатюры

Ошибка при импорте объектов в Blender
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

16.10.2014, 08:25

Ответы с готовыми решениями:

Ошибка при импорте
Привет
Подскажите пожалуйста что за ошибка как ее можно решить?
Notice: Undefined index:…

Ошибка при импорте БД
Значит делал я сайт на локальном сервере xampp… пришла пора заливать его на хостинг… выбрал…

Ошибка при импорте БД
Приветствую!
Если это важно, то пытаюсь XML от готовой темы wordpress импортировать к себе.
При…

Ошибка при импорте
Добрый день, вчера я хотел перенести сайт на другой хостинг, но у меня возникает проблема при…

3

0 / 0 / 0

Регистрация: 16.11.2013

Сообщений: 70

16.10.2014, 11:14

 [ТС]

2

Вопрос отпал, сам разобрался.



0



Модератор

2886 / 1744 / 178

Регистрация: 19.02.2011

Сообщений: 6,434

16.10.2014, 11:26

3

И в чем была причина?



0



0 / 0 / 0

Регистрация: 07.12.2015

Сообщений: 1

07.12.2015, 19:06

4

Столкнулся с аналогичной проблемой, долго думал… потом опомнился))) Проблема проста — нечего было выпендриваться и указывать недопустимые символы в пути к файлу (т.е. путь в папку, в которой хранились файлы сохранений), апострофы и т.д. Обычное переименование папки лечит проблему мгновенно)



0



1. Check the obj file

In your case the obj is not exported correctly. Obj is a human readable file format it is easy to find the issue. You can check this by open up the file in a text editor of your choice (sublime, gedit…).

To check referenced materials go to these lines:

  • mtllib [external .mtl file name]
  • usemtl [material name]

In your case mtllib line is correct, but usemtl is missing.

# OBJ FILE
...
f 3103/18700/18700 3081/18701/18700 3119/18702/18700
f 279/18703/18703 3118/18704/18703 274/18705/18703
f 265/18706/18706 3101/18707/18706 278/18708/18706

# usemtl material name (reference to the .mtl file)
usemtl MyMaterialName

You can find the material name in the mtl file in this line: newmtl [material name]

# MTL FILE
newmtl MyMaterialName
Ka 1.000 1.000 1.000     # white
Kd 1.000 1.000 1.000     # white
Ks 0.000 0.000 0.000     # black (off)
map_Ka myMap.jpg         # ambient texture map
...

As last step check if the paths to the textures are correct:

map_Ka my-texture.jpg                           # points to texture in obj folder
map_Ka /home/user/images/my-texture.jpg         # absolute path on unix
map_Ka C:\Users\user\images\my-texture.jpg  # absolute path on windows

Make sure that the filenames of your textures are correct and there are no white spaces in the paths itself. Instead of pointing to the ‘absolute path’, you can also try Blenders Find Missing Files operator. For further information about all the possibilities of obj’s read this wikipedia article.

2. Apply the material

If the material is not applied to the imported object you can select it here:

enter image description here

3. Enable textures in the viewport

  • If your textures are pink, see: Why are all the textures in my file pink?
  • To display the texture in the viewport see: How to show textures in the 3D View editor?

Вопрос — Ответ

  • В этой теме 1,016 ответов, 225 участников, последнее обновление 1 неделя, 3 дня назад сделано stegosaukr.

Просмотр 15 сообщений — с 421 по 435 (из 1,017 всего)


1
2
3

28
29
30

66
67
68

  • Автор

    Сообщения

  • 06.12.2016 в 16:41

    #13505

    Пробегусь по темам форума детальнее, буду писать в нужную ветку. Ну а если не шибко много, то почему blender автоматически не находит текстуры? Или так и должно быть? У меня SKP модели сохраняю через obj. Надеялся, что должен находить.

    06.12.2016 в 19:33

    #13507

    Поцитирую Википедию:

    Формат файлов OBJ — это простой формат данных, который содержит только 3D геометрию, а именно, позицию каждой вершины, связь координат текстуры с вершиной, нормаль для каждой вершины, а также параметры, которые создают полигоны…

    …OBJ является одним из самых популярных форматов передачи 3-х мерной компьютерной геометрии. Информация о внешнем виде объектов(материалы) передается в файлах-спутниках в формате MTL (Material Library). OBJ при необходимости ссылается на такой файл с помощью директивы

    07.12.2016 в 01:31

    #13532

    Спасибо, Артем, за цитирование с википедии, но мне объяснять не требуется что такое obj)) Я в 3D графике давно, только не в blender (осваиваю для коллекции). Потому и знаю что при импорте obj программы автоматически закусывают MTL файлом и подгружаются вместе с геометрией и текстуры. Потому и рассчитывал что Blender так и сделает, но нет. Вопрос в том, можно ли blender заставить читать mtl файл? Или вручную указывать путь к текстурам каждого материала? Есть объекты с 330 материалами, вручную переназначать….. сами понимаете. Запекать надо.

    07.12.2016 в 01:42

    #13533

    Нет, вручную точно не вариант. А вот насчет может или нет, тут я не знаю. Сам OBJ с MTL ни разу не экспортировал и не интересовался.

    Хотя вот тут парни пишут что может, при чем все на автомате:
    http://blender.stackexchange.com/questions/5110/how-to-import-a-mtl-file

    Может при импорте чекбокс какой нужно поставить?

    07.12.2016 в 11:19

    #13534

    FBX вам не подходит?
    Поддерживает больше функций. OBJ например морфы не поддерживает

    07.12.2016 в 11:45

    #13535

    FBX очень хорошо, и obj тоже — это 2 основных формата через которые я обмениваюсь моделями между sketchUp, vue, 3ds max. Но проблема оказалась в том что Blender все-таки читает MTL но самостоятельно понять что нужно наложить текстуры на меш автоматом не хочет, нужно дополнительно нажать эту кнопку. И как сказал Артем, чекбокс при импорте ставить не пришлось, его там не увидел, а вот после импорта — да.
    скриншот

    07.12.2016 в 11:52

    #13539

    Это немного не то. 🙂 Это преобразование текстур из внутреннего Рендера в Cycles. А если импортировать файлы в режиме внутреннего рендера то текстура автоматически наложится?

    07.12.2016 в 12:03

    #13540

    Когда выставляешь Blender render и режим отображения текстур то все становится черным (сразу после импорта в режиме solid показываются цвета полигонов). А сами материалы в превью с текстурами. Как ни пытался найти способ чтобы текстуры отобразились в окне 3Д вида — не получилось. После конверта в Cycles все как по нотам.

    07.12.2016 в 12:05

    #13541

    Интересно. Подождём, может, гуру что подскажут.

    07.12.2016 в 12:19

    #13542

    Гуру не требуется, нашел. Тот же эффект с отображением текстур ставится галочкой Shadeless в панельке Shading. Очень странно что галочку ставить надо после импорта)

    11.12.2016 в 00:16

    #13572

    что это и как с этим бороться

    16.12.2016 в 01:02

    #13612

    Скажите пожалуйста, интересуюсь вот, а реально ли в блендере сделать гигантские сцены с миллиардами полигонов с лесом, автопарком и тд, разумеется, геометрия через линки и тп. Или профиль блендера немного скромнее по объемам? Вот пример:
    пример

    31.12.2016 в 15:02

    #13794

    (знаю тупой вопрос но всёже) можноли какнибуть вопще зделать таково (https://sketchfab.com/models/b68f002ce9b942cea2fbbf2446ffdcf8) милаху азриэля

    06.01.2017 в 19:46

    #13824

    Помогите, может у кого-нибудь была такая ошибка. Пытаюсь рендерить на видеокарте(r9 270) выдает ошибку «opencl build failed errors in console». В консоле пишет вот:

    06.01.2017 в 20:12

    #13825

    Судя по всему, это баг последней версии Blender:
    https://developer.blender.org/T49897

    Нужно откатиться назад, либо скачать daily build.

  • Автор

    Сообщения

Просмотр 15 сообщений — с 421 по 435 (из 1,017 всего)


1
2
3

28
29
30

66
67
68

  • Для ответа в этой теме необходимо авторизоваться.

Авторизация

blender course

cycles-book

eevee-book

Рубрики

  • Анимация и риггинг
  • Загрузки
  • Материалы и текстуры
  • Моделирование и скульптинг
  • Новости и обзоры
  • Основы Blender
  • Рендеринг и освещение
  • Симуляция и частицы
  • Скриптинг на Python
  • Создание игр в Blender

mod-book

freestyle-book

3d-printing-with-blender

Comment Actions

getting the following:

(  0.0001 sec |   0.0001 sec) Importing OBJ '/home/philippo/Downloads/Blender Bugtracker/T60387/OBJ.obj'...
  (  0.0005 sec |   0.0000 sec) Parsing OBJ file...
   (  3.5129 sec |   3.5121 sec) Done, loading materials and images...
      3.5140 sec |   3.5132 sec) Done, building geometries (verts:254941 faces:274719 materials: 1 smoothgroups:0) ...
Error: Array length mismatch (expected 11097, got 11094)
Traceback (most recent call last):
  File "/bin/2.80/scripts/addons/io_scene_obj/__init__.py", line 145, in execute
    return import_obj.load(context, **keywords)
  File "/bin/2.80/scripts/addons/io_scene_obj/import_obj.py", line 1201, in load
    dataname,
  File "/bin/2.80/scripts/addons/io_scene_obj/import_obj.py", line 642, in create_mesh
    me.vertices.foreach_set("co", unpack_list(verts_loc))
RuntimeError: internal error setting the array

Can confirm the vert mismatch. Can also confirm this is coming in without errors in 2.79…
Will confirm for now, @Bastien Montagne (mont29) might know right away? (feel free to throw back at me and I will investigate more…)
[This might not be a bug but a broken OBJ though…]

В Агисофте была создана модель памятника, включая текстуры. Есть необходимость провести небольшую реконструкцию модели (речь идет о рогах). Для этого импортировал модель.obj в Блендер. Но вижу только саму модель без текстуры. Что делать? Прошу помощи.
Поиск решения проблемы в интернете успеха не принес. Может всесто obj надо было работать с иным форматом?
Заранее благодарю за любую помощь

РS Здесь в файлообменнике уложена модель памятника. Это, если кто захочет посмотреть на него

https://www.uschovna.cz/zasilka/ZNYUG6BRSJ4NIGJ3-4MB/

SerKol
Сообщения: 9

Сообщение #2 trideshnik » 21.06.2020, 17:34

Не совсем понимаю, в чем заключается проблема, у меня файл с текстурами, да и в архиве вижу еще 4 штуки, можно назначить
PS На дроне облетал? прикольно

trideshnik M
Аватара
Сообщения: 456

Сообщение #3 SerKol » 21.06.2020, 20:04

Проблема в том, что не вижу текстуру. Все вроде далаю правильно, а текстуры нет.
Частенько случается так, что бьюсь как рыба об лед и нечего не получается, просмотрю интернет и тоже нечего, ютуб, уроки и т.п. Потом, когда уже окончатльно опускаются руки, пишу в форум и взываю о помощи и сразу же по отправлении сообщения все получается. Вот и в этот раз произошло тоже самое. Еще не знаю как и почему, но текстура появилась.
Да, облетал на дроне. Пытаюсь наладить создание 3д моделей исторических зданий. А пока набиваю руку на мелких объектах.
Итак, модель создал. Качество для начала удовлетворительное, но некоторые детали требуют доработки, например, рога. Агисофт этого не умеет. Вот и пытаюсь дорабарывать модель в Блендере. С геометрией вроде бы справляюсь, скоро встанет вопрос текстурирования новых (или исправленных) деталей. А вот тут я ни в зуб ногой. Можете помочь советом?

SerKol
Сообщения: 9

  • 1

Сообщение #4 trideshnik » 21.06.2020, 20:59

Можно загрузить исправленный мешь в агисофт и заново просчитать текстуры для новой геометрии уже с хорошей топологией, ювишкой и тд, главное только чтобы координаты совпадали и всякие вращения, скейлы и тд, т к при выходе из агисофта имеем мешь который находится фиг знает где с рандомными осями, нужно чтобы загружаемый также находился в этом месте и совпадал со старым.

trideshnik M
Аватара
Сообщения: 456

Сообщение #5 SerKol » 21.06.2020, 22:40

Мне тоже пришел в голову этот вариант. Только в Блендер модель попадает черт знает в какое место и с непонятной ориентацией. Приходится модель тянуть в центр и всяко разно крутить. Похоже, что вернуть исправленный мешь в Агисофт не получится. По крайней мере, не знаю как.
Существует способ как решить эту проблему?

SerKol
Сообщения: 9

  • 1

Сообщение #6 trideshnik » 22.06.2020, 07:13

Не помню, есть ли в самом фотоскане инструменты для этого, всякие осевые стрелочки, которые привязываются к маркерам, должны наверное быть
Если нет, то можно в блене, после импорта из агисофта, сразу создать зависимую копию объекта, Ald+D, ее переместить в центр координат правильно развернуть, сделать все что хочешь, работает как: редактируешь один объект — редактируется и второй, затем удалить копию, и будем иметь измененный оригинал, находящийся в изначальном положении
И таки да, это не совсем рационально по использованию памяти во время работы, скорее всего есть менее костыльные способы, это так, что первым пришло в голову

trideshnik M
Аватара
Сообщения: 456

  • 1

Сообщение #7 cyberdime » 22.06.2020, 14:44

Там у тебя каша с именами текстур. Если твоя задача увидеть текстуры на объекте в Блендере сразу после импорта, то сделай следующее.
1. Изменить имена текстур на те, что просит Блендер
2. Внести эти же имена в .mtl-файл (не забыть убрать кавычки). См. картинку
Изображение
PS: Кстати, это я про 2.79. В 2.83 eevee и cycles все видят и без корректировок.

cyberdime
Аватара
Сообщения: 387

Сообщение #8 SerKol » 22.06.2020, 20:14

trideshnik,
Интересный вариант. Обязательно попробую
Спасибо за помощь

Добавлено спустя 5 минут 9 секунд:
cyberdime,
«Кашу» создал Агисофт, я тут ни причем. Честно говоря, не пойму алгоритм создания имен, которые требует Блендер.
Наверное, легче будет перейти на 2.83
Найти такие решения все равно что искать иголку в стоге сена… Спасибо за помощь

SerKol
Сообщения: 9

Сообщение #9 SerKol » 25.06.2020, 16:56

Итак:
— поставил блендер 2.83 и тектура теперь сама открывается
— создал зависимую копию, поработал с моделью, экспортировал OBJ
— импортировал OBJ в Агисофт и снова построил текстуру
Все вроде хорошо, но текстура на рога не села (рога делал практически в свободном полете и их геометрия не совпала с оригиналом)
Остается последняя возможность — поправить тектуру в Блендере. Вот только боюсь, что с UV разверткой такого сложного объекта будут большие проблемы
Может, кто подскажет как по простому построить текстуру на рогах и карточки вымазать
Здесь ссылка на файлообменник с последним вариантом модели

www.uschovna.cz/zasilka/ZQIJAIDHA78KYXFC-SLH

SerKol
Сообщения: 9


Вернуться в Общие вопросы

Кто сейчас на форуме

Сейчас этот раздел просматривают: 1 гость

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Blender отчет об ошибках
  • Blender запекание нормалей ошибки