Saturday, 29 July 2023

Novacene

 Com uma capa bem bonita que me lembra uma Bíblia que tenho em casa, apanhei este livro na biblioteca do Iscte, quando estive lá a trabalhar, com o gabinete emprestado para a gravação de um podcast.

O autor e o título chamaram-me a atenção, tinham algo familiar, mas nunca li nada dele. Lê-se de uma penada. O James Lovelock é familiar, cunhou o termo Novacene, a era geológica que se seguirá ao Antropoceno, e cunhou a teoria de Gaia, que se apanha bem neste livro.

Pus este livro no meio do Bill Gates - How to Avoid a Climate Disaster - e encaixa bem. Não é dedicado ao aquecimento global. Para Lovelock o aquecimento global destas décadas é importantíssimo, mas vê-o com mais distância. A terra e tudo o que nela existe são um organismo vivo - Gaia - que trabalha (se assim se pode dizer) para arrefecer a Terra, que deveria ser muito mais quente do que é dada a sua posição no Sistema Solar. Não estamos a dar uma grande ajuda, mas a terra, nós e a inteligência eletrónica que está a surgir e que nos sucederá como organismo dominante na terra podem dar conta do recado.

O domínio da inteligência eletrónica - chama-lhe cyborgs embora não tenha ideia de qual será a sua forma, se existir - é o Novaceno. É optimista e não se incomoda com o eventual fim da inteligência baseada em carbono, será porque tem 100 anos? Acredita que os cyborgs serão dezenas de milhares de vezes mais inteligentes que nós. Olharão para nós a viver, reagir e pensar da mesma forma com que que olhamos para as plantas e, pelo menos no ínício, terão apreço e necessidade de nós tal como nós temos das plantas.

Acredita que somos a única vida inteligente no cosmos e o argumento é convincente.     


Wednesday, 8 June 2022

Fazer Fumo #2

Com o Hamilton como banda sonora, fiz o segundo treino do plano. 50 minutos a correr sem indicação de distância ou velocidade. Me lembre de ver quantos quilómetros fiz mas não foram muitos, só no fim acelerei um pouco quando cheguei a terreno plano. 

O treino foi um dia atrasado, ainda não vi qual o impacto na semana mas ainda não consegui tirar o tempo para correr no princípio do dia. Não sei se é preguiça cansaço falta de vontade mas sair da cama mesmo depois de acordado não está a acontecer. Provavelmente será o estresse de todo o trabalho acumulado. 

https://connect.garmin.com/modern/activity/8979544167?share_unique_id=2

Monday, 6 June 2022

Fazer Fumo #1

 Dou este nome ao post porque fazfumo já tem dono. Acabei o primeiro treino prescrito por um treinador de corrida, o Hélio Fumo. Por pouco não aconteceu. Em vez de me deitar cedo fiquei acordado até a casa está calma e hoje de manhã a casa continuava agitada e não saí para ir treinar. 
Adiei o treino para o fim do dia Depois de cortar o cabelo mas numa reunião às 4:00 dei conta que tinha outra reunião às 5:30, que não tinha chegado ao calendário. 
Quando terminei levar toda a gente para a mesa e só depois do Vasco deitado, quando já pensava em andar com os treinos um dia para a frente, é que vesti os calções e sair de casa para os primeiros 8 km do plano de treinos. 
Claro que agora não encaixa muito bem fazer o treino de 50 minutos amanhã de manhã, mas acho que é a única hipótese. 
https://strava.app.link/EDghIcbmEqb

Monday, 18 April 2022

Meridãos - Gralheira - Portas - Meridãos

 Ontem dei mais uma volta de bicicleta em Tendais. Poso escrever muita coisa, mas o mais importante é que fui com os primos Pedro e André, fui na bicileta do Tio Zé Pedro, foi muito duro mas nunca desagradável. Estas voltas em Tendais, sempre duras, são uma revelação que se repete anualmente que não se repetem fora de Tendais. Teria de arranjar uma rotina e companhia perto de casa. A verdade é que sem companhia não teria muita piada. E também há qualquer coisa diferente em pedalar naquele vale.

Hoje, sentado no café da universidade, sentia-me regressar à estrada.







Thursday, 5 September 2019

Revit and IFC Element Identification

Writting here to clarify my own mind on the subject of Revit element identifiers.

In each Revit file there is an id called ElementId, a small number as bellow. This number is  unique to the file. This means that if we mix elements from different files we will/may get repeated ids, which is not good.

Then we have the GUID, or IFC id, which is (statistically) unique in the whole universe for every element create, ever. This identifier is created only when the Revit file is exported to IFC, and here is a nice trick: When we export an IFC file, we can ask Revit to store the IfcGUID in an element parameter, and then it will become part of the model, since it will not be generated again for that model (found that here).


We can then see it in the Properties dialog:



What is strange/scary is that we can then change that parameter's value in the Properties, and Revit will keep using that value in future IFC exports. When the parameter is populated we can access it in Dynamo too:




When I convert a model to IFC, send it to Unity using https://www.tridify.com/ and open it there I can spot the Revit id, and the IFC Id (GUID) there:


I can also find it in the IFC file, and right next to it we can see the Revit Id (the short one)


Finally we have the Revit UniqueId, which is an Id issued by Revit and which can be converted to the IFC GUID (more on that here: https://thebuildingcoder.typepad.com/blog/2009/02/uniqueid-dwf-and-ifc-guid.html).

Found also this post that explains what I wrote above in more detail and contains Python code to get all identifiers: https://wrw.is/the-many-ids-of-a-revit-element-and-how-to-work-with-them-elementid-uniqueid-dwf-guid-ifcguid/.

Thursday, 4 May 2017

Dynamo - Adicionar mobília a gabinete de acordo com a área

Para carregar muita informação nos modelos dos edifícios do campus temos de automatizar e foi a isso que me dediquei hoje. O objectivo é inserir uma família (mobília, conjunto de mobília, pessoas) nas salas que cumprem determinado critério. O critério pode ser a área, ou fazer parte de uma determinada lista que vem do sistema de informação académica. 

O teste em baixo adiciona uma mesa a todas as salas com mais de 40 m^2 de uma edifício fictício. Na realidade o que queremos não é filtrar salas por área, mas por outras características. Os gabinetes, salas de aulas, etc., mas o funcionamento é o mesmo. Mais complicado será inserir não uma mesa mas várias, e com a disposição correcta.


Thursday, 16 March 2017

Vibrações

Apesar de ter mudado de área principal de trabalho, continuo a colaborar em trabalhos da área da Geotecnia, modelação numérica e controlo (ou controle?) de vibrações causadas por explosivos. Nem que seja porque de vez em quando recebo um email de um leitor dos meus artigos (normalmente este) que me obrigam a recordar um detalhe recôndito do doutoramento (tese e resumo). Faz-me bem ao ego!

Esta manhã o meu aluno Ricardo Fonseca apresentou, no ISEL, o plano de tese final de curso onde vai modelar a propagação de vibrações na barragem de Salamonde devido ao desmonte com explosivos. Aqui está o bem delineado e ambicioso plano de trabalhos.


Saturday, 4 March 2017

Note to myself - Forge da Autodesk

Como usar o Forge viewer para embeber os meus desenhos onde quiser?

E faz o mesmo que o Flux.io, out of the box, ou tenho de aprender a API?

Friday, 24 February 2017

Flux.io



Comecei a brincar com o Flux.io há duas semanas. Pareceu-me que era interessante, depois de ver que é uma spin-off da Google fiquei mais em sentido (sou muito impressionável). Percebe-se logo o que faz: liga aplicações (Excel, dynamo, excel, grasshopper, etc.) a uma cloud, permitindo partilha de informação. Já uso plugins e o dynamo para passar parametros do Excel, mas os ficheiros têm de estar no mesmo pc (ou ser sincronizados no google drive. Isto permite não só trabalhar à distância como fazer os syncs em diferido. Depois vieram duas semanas de escrita de propostas e parou tudo.

A versão Evaluation permite dois projectos, 100 Gigas de armazenamento e guardam o histórico de dados que por lá passam durante 90 dias. Mais que suficiente: a questão dos projectos é uma questão de arrumação, visto que posso ligar quantos ficheiros quiser a cada projecto, os dados que estou a passar são quase todos texto, o histórico por enquanto dispenso.

Primeira aplicação

O meu primeiro teste complicou-se um pouco pois fui mais ambicioso. Quero mandar para o Revit as condições actuais do tempo (precipitação, vento, temperatura, etc.) e fazer com que o modelo reaja. Pode fechar abrir as luzes, fechar portas e janelas ou estender toldos.

O que acabei por fazer foi mudar a altura de uma pala de acordo com a temperatura actual em Lisboa. Não tem muita lógica na realidade, é só para ver se funciona. A figura abbaixo mostra a pala, que é materializada por uma pequena laje de betão. A laje está agarrada ao Level 2. O que vamos mudar no Dynamo é a altura deste Level.

Dividi a explicação em duas partes.




Parte 1 - Dados do clima > Google Sheets

Procurei a API de estado do tempo da própria Google mas já não existe. Mas existem muitas outras. Abri uma conta nesta plataforma: https://www.apixu.com/. Com um pouco de estudo aprendi como funciona o endereço que devolve um ficheiro XML que o google sheets abre com o comando importxml. Uma vez compreendida a estrutura do XML e o XPath, é mais simples que formatar texto no Word. A imagem abaixo mostra como funciona.


A seguir basta gerar duas chaves do Flux, uma para a célula com a temperatura e outra para a célula com o vento. Estas chaves vão ser abertas no Dynamo e aí vão induzir alguma acção no modelo.

Acabei de ter o meu momento Dah. Como o Dynamo tem Python, também lê XML directamente e não preciso do Flux para nada. Provavelmente já há nodes para ler XML pois o ICF é baseado no XML. Pois, cá está: http://whatrevitwants.blogspot.pt/2015/11/read-xml-files-and-use-in-revit-with.html
Enfim... Sempre posso comparar as duas formas de fazer isto. Vamos à segunda parte.


Parte 2 - Google Sheets > Dynamo

Para aceder aos dados do google Sheets basta instalar o plugin do Flux no Dynamo e autenticar. Temos assim acesso a nós do Dynamo para selecionar o projecto e, dentro do projecto, aos dados que pretendemos importar. Estes dados podem ser listas, geometria, ou outras estruturas. No nosso caso é apenas um valor numérico.  
Este valor, a velocidade do vento actual em Lisboa, é multiplicado por um factor de escala arbitrário (para que om movimento da pala seja notório) e alimenta a cota do Level 2 do modelo. Sempre que o valor do vento sobre, sobe também a pala. 


Notas

A API que usei não é a mais popular. Diz o Stackoverflow:  Yahoo! Weather and Wunderground are two of the three most popular weather APIs at the moment. OpenWeatherMap is the third. You'll probably find what you need in at least one of these 

Quanto mais corro menos escrevo

mas ontem fui à pizza run e foi muito bom. Quer dizer, o treino foi muito mau, e isso é muito bom. Estava à espera de uma volta antes da pizza. Pensei mais a pizza que no run, e o run foram 16km de sobe-e-desce, à la Shark Tank, com um cozinheiro imaginativo e lebres que não se deixaram apanhar. Mesmo assim ainda acabei nas escadinhas do Martim Moniz a dois degraus de cada vez, o mais difícil ainda foi uma rampa-escada-rampa-escada lá para meio do treino que me fez quase passar do passinho de corrida para o passo de caminhada, embora a velocidade devesse ser a mesma, tal a poupança no saltinho que separa uma coisa da outra. Nessa altura o que menos me apeteceu era pizza!



A pizza e a superbock pret do Primo Basílico não desiludiram (entretanto a vontade de comer pizza voltou, fica aqui o link para lá poder voltar em família), mas o melhor foi mesmo o convívio. Nunca vi a corrida como uma maneira de conhecer gente nem de estar com gente. No último ano tenho gostado de correr acompanhado porque assim corro mais vezes e melhor e em horários impensáveis se tivesse de os cumprir sozinho. Mas quando entrei neste treino ia mesmo com a vontade de correr e comer pizza em tão boa companhia.







Wednesday, 3 August 2016

Formatos 3D

3D Formats

OBJ - List of points followed by incidences (triangle vertex). Just like FEM files
# www.zbrush.com
#Vertex Count 54630
#Face Count 109256
v 0.68168121 1.8563795 0.35159689
f 9900 36020 20005

Monday, 18 July 2016

Muitos meses depois - Trail

Depois de 8 meses sem provas e com ritmo de treino intermitente mas sempre em Monsanto com os Esquilos, fiz duas provas de seguida.



A primeira foi o Trail da Louza, 17km, com o André. Foi o primeiro trail, não fazia a mínima ideia ao que ia, pensava que ia ser como os treinos das 6 da manhã, em que se corre sempre ou quase sempre. Pois aqui primeiro não ia sozinho, depois estava muita gente no trilho e as subidas não têm nada a ver com as de Monsanto. Fui bastante mais devagar do que iria sozinho mas quase nunca me custou, excepto no fim quando estava a ficar atrasado para a viagem.



Subidas e descidas de assustar, inclinações de 30% (medidas a olho), pedra solta, ribeiras e abastecimentos saborosos com nutela e batata frita.





Passadas duas ou três semanas, foi a vez de voltar ao berço. Sou de Lisboa e do mar e do Guincho, mas metade vem da serra e é aí que tenho o meu nome nas pedras do cemitério. De novo o André desafiou-me e eu fui. Só chegar lá já foi complicado, mas a M. deixou-me no Porto e o Pedro Nuno levou-me. Pusemos a conversa em dia até Tendais e fomos directos para o Solar do Montemuro. Na entrada encontrei o Kiko Martins a beber uma imperial e a ver a vista ou a pensar na vida ou a sossegar, pois ia fazer os 70km. Dois dedos e conversa e fui ter com o Tio Carlos e o André. Soube mesmo bem estar ali a jantar com eles, ainda por cima a comer bem. Sinto-me querido ali e a reatar os tempos de criança em que passámos Natais e férias de verão no calor.



Fomos para casa, atirei para o chão a tralha que achei que ia precisar no domingo, o André deu-me umas dicas, pus o despertador e fui dormir por cima do saco-cama.



Acordei antes das sete, vesti-me e já estava quente. Lá fora o dia já estava adiantado, o que metia medo. O plano era começar a andar para habituar o joelho e não me matar nos 11km a subir do principio, sabendo que não tenho stamina para 38km nem perto disso. E devagar eu fui, mesmo devagar. Andando e correndo uns poucos cheguei fino, quase às 10h da manhã, ao S. Pedro. Levava grande parte do desnível feito e o joelho e perna estavam a portar-se bem. Tudo calmo, tudo sereno.



E encontrei o Kiko, ou melhor, a Maria, a mulher dele à espera dele no abastecimento. E arranquei com ele e o companheiro dele. E comecei-me a divertir. Sempre a correr, descer subir descer trepar sempre a abrir. Eu com medo dos tombos e do ritmo, de ir depressa demais para mim ou para eles, mas principalmente a tentar imaginar onde ia acabar o gás. Mas depressa de mais acabou a piada, ao fim de poucos km as provas voltaram a bifurcar. Disse adeus e segui por um caminho de juntas e eles por um lameiro. O meu ritmo baixou e desanimei. Pensei que se dane e voltei para trás o mais depressa que pude, a pensar que talvez nem os apanhasse porque eles iam perto do meu limite, mas encontrei-os depressa e expliquei-me "Vou junto até onde der". Não disseram grande coisa, não sei o que pensaram, se é que pensaram e continuámos. Numa subida grande por um ribeiro seco em direcção às Portas andámos bastante, o Kiko ia mal da barriga e o Zé? falava de um medicamento para as articulações. Ainda esperei uns pedaços por eles numas subidas. Depois o Kiko melhorou e voltámos a correr bem.

Chegámos às eólicas no lado da serra que dá para Castro Daire, mais a Sul e andar por essa encosta sul com a Seera da Estrela ao longe foi a parte épica da prova. Estava-me a a aguentar bem ao ritmo, a subir e a descer, mas sempre a queimar. Encontrámos uns quantos dos 70 e fomos juntos do abastecimento para baixo mas separá-mo-nos depressa, acho que nós íamos mais depressa. E continuei, passámos postos já nas aldeias até que chegámos a Quinhão onde encontrei o André!



E mesmo sem saber eu já estava perto do fim. Levava uns 30km em cima, 11 a subir devagar e 20 completamente over my head. Umas subidas à frente senti-me a fraquejar mas aguentei. Junto do Bestança apareceu uma subida curta mas muito forte a ligar do caminho à levada e senti um castigo enorme por todo o corpo. Depois veio uma subida em que andámos todos mas eu só queria andar devagar, devagar, cada passo era uma ordem. A expectativa era nula, não ia conseguir acompanhar. Disse adeus e agradeci, deram-me uma experiência enorme. Continuei a andar à procura de uma sombra e soube mesmo bem. Passado poucos minutos encostaram mais dois dos 70km, descansaram e fomos até ao posto de Soutelo. Ainda comi e arranquei mas foram 5km fáceis, cheio de planos, descidas e sombra, que fiz a lamber as últimas gotas do depósito, andar, correr, andar, suspirar.



Cheguei ao antepenultimo posto e parei o Garmin. Tinha os 38km no bucho, tinha rebentado, tinha andado por onde não devia e como não devia e soube muito bem! Ir até Cinfães em arrasto não me dizia nada, desta vez. Esperei uma hora por boleia e fui com os bombeiros que me deixaram directo à porta de casa.



Friday, 17 June 2016

Importing from Sketchup to Unity

Architectural models from Sketchup have been working straight away when they get to Unity. There is no need to convert them to an intermediate format, the .skp files are good enough. I have this linkedin post (also got a pdf) on importing via .fbx that I didn't try yet cause it wasn't necessary.
Questions to investigate:

  1. tried importing in skp format from current Sketchup (June2016) version and it doesn't work, but when trying from older version it works.
  2. we need the Pro version to export to .fbx
  3. is it better to use fbx or skp?

Tuesday, 5 April 2016

Pipeline modelo com Oculus - desactualizado com a versão 5.

Tenho um Doc word chamado "Pipeline_Unity_OculusRift.docx". Abaixo está uma versão sem imagens.

Geração de modelos básicos para Oculus Rift em Unity
Descrição – permitir navegação com Oculus Rift em geometrias importadas de programas de modelação 3D (Sketchup, Blender, Rhino, 3DsMax, etc.).

Configuração do Unity para Realidade Virtual

Settings Globais
Ir ao menu Edit\Project Settings\Player e activar Virtual Reality Supported no Inspector (lado direito).

Importar Assets do Oculus Rift para Unity

Descarregar package “OculusUtilities” do site do Oculus Rift: Developer/Downloads/Engine Integration. Verificar compatibilidade com a versão do Unity que estamos a usar. Se necessário actualizar o Unity.
Unzip do ficheiro e arrastar o package para os Assets ou ir a Assets/Import Package/Custom Package. Aceitar a importação de todas as partes do pacote.
Nos Assets, abrir a pasta OVR/Prefabs e arrastar o OVRPlayer para a Scene. Depois pode-se afinar a posição do player em relação ao modelo.

Modelo 3D: importar e modificar

1 – Importar modelo 3D. Modelo tem de estar em formato aceite pelo Unity. Para importar basta arrastar ficheiro para os Assets. É boa ideia organizar os Assets em pastas. Verificar se geometria está correcta, materiais em texturas sobreviveram à importação, etc.
2 – Arrastar modelo para a cena, clicar e pôr o seu centro nas coordenadas 0,0,0. Se os modelos estão em coordenadas muito longe do centro (milhares de metros) podemos ter problemas.
3 – Expandir modelo na Hierarquia (lado esq.), seleccionar todas as peças do modelo e seleccionar Add Component no Inspector (lado direito): Physics->Mesh Colider. Isto faz com que todos os polígonos passem a ser impenetráveis para o avatar (é um pouco dispendioso mas é o mais simples).


Carregar Play e navegar, com ou sem Oculus.

Tuesday, 15 March 2016

Learning Resources on Computational GRaphics

3Ds MAx on Lynda.com

After taking the first course, which I did not finish since I ain't interested in animationa and advanced lighting, etc. I signed up for a trial account at digital tutors, which is also prety good. The videos I watched from this short course, CG101 are prety good and explains very well the concepts.

So now I need to learn 3DS or other 3D modeling sftware to be able to manipulate the Salamonde model from Autocad 3D. So I'm taking this course 3ds Max 2013 Essential Training and hope that 2013 is not so far away from 2016.


Some more sites on CG

http://www.scratchapixel.com/lessons/3d-basic-rendering/global-illumination-path-tracing

http://home.lagoa.com/2014/04/ray-tracing-vs-path-tracing-in-plain-english/

Monday, 14 March 2016

Materials

There are 2 kinds (at least for now)

  • Physical materials govern colisions: rebound, friction, etc.
  • Visual (?) materials govern the interaction with light (that's a very correct way of putting it). They call this Materials. I'll discuss.
Material (visual) properties:
  • Albedo -  In reality the definition of albedo is the percentage of light it reflects, whiteness - blackness, but here they use it for the color when there is no light (strange...maybe they mean under neutral, white light). Albedo comes from latin albus =  white. We can assign one value to the whole oblect or a map.
  • Metalic (map and slider) - the way it reflects light,
  • Roughness - more on the way it reflects light, see diffuse and specular to know more, later on.
  • And there are more maps which can be stored in the chanels of the rgb+alpha images 
WHat I don't know yet is how the maps are atributed to the geometry!


Sunday, 13 March 2016

Colisions

This video explains the logic well. Must assign colision properties to objects. The easiest way is to assign Mesh coliders, but it is expensive since the engine must keep track of all the polygons. Most times we can use box or sphere coliders and set them in a smart way.

Animation

For now I'm not to worried about this but what I learned:
animations are created in Maya or 3Ds or Blender, Unity is not good;
creating a character has three steps: modelling (building the model mesh), rigging (the skeleton and the logic and hierarchy and skinning (joininng the two);

Friday, 11 March 2016

Lighmaps UV

This expression keeps popping up from time to time, had to investigate.

So lighmapping is a way of baking light effect in objects. It only works for static objects and static lights. As is is baked it is not calculated in realtime. In reality a new texture incorporating the effect of lighning replaces the material's native texture and the light can be eliminated (or at least we don't need to calculate it's effect on that object in real time). Great video here.

Wikipedia page

Light in general in Unity

Lighmaps in Unity (starting point)

Now another question that I didnt understand is this UV mapping, though I think I have an idea that this is similar to the way FLAC2D from Itasca works, with local coordinates.

So this answer is great.

UV are the local coordinates of a flat surface with U and V going from 0 to 1. This video explains well what and how a UV map is built, but it really is the "skin" of the object taken out, cut in strategic places and stretched out and mapped in the coordinates.

Thursday, 10 March 2016

Normal maping

I came accross this very cool concept on a Unity video @ Lynda's course. The idea is to record surface detail of an object by taking the surface normals on an image using RGB to represent the normal vector components in each pixel.
Then we can degrade the mesh but use the normal map of the detailed version on the degraded mesh. Of course the lights must nknow how to deal with this geometrically flat surface containing detailed information on the relief. Very cool!

Because most of the surfaces will have normal normals (pointing out of the surface, a big part of the normal maps will be kind of blue, i.e. flat.



Normal mapping is a kind of Bump mapping. We can also record elevation coordinates. With these we can really deform the surface or we can use the surface topograpfy just for interaction with light.

Wikipedia for normal mapping
Wikipedia for bump mapping
Unity for normal mapping, very complete!